2

在我的 C# 代码中,我希望能够记录COMExceptions 以便不仅输出HRESULTs 的十六进制表示(例如,0x80004005),而且输出相应的 WinError.h 定义符号(例如E_FAIL)。

如果我调用ToString()异常参考,则只有十六进制表示。

是否有一种内置方法可以为对象内部的值获取类似E_FAIL人类可读的常量?HRESULTCOMException

4

2 回答 2

5

像这样使用COMException'HResult属性

unchecked
{
    var msg = Marshal.GetExceptionForHR((int)0x80004005).Message;
}
于 2013-08-23T09:06:56.253 回答
0

看这里 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351%28v=vs.85%29.aspx在 FORMAT_MESSAGE_FROM_SYSTEM。它返回有关传递的错误代码的人类可读消息。

于 2013-08-23T09:05:43.690 回答