在我的 C# 代码中,我希望能够记录COMException
s 以便不仅输出HRESULT
s 的十六进制表示(例如,0x80004005
),而且输出相应的 WinError.h 定义符号(例如E_FAIL
)。
如果我调用ToString()
异常参考,则只有十六进制表示。
是否有一种内置方法可以为对象内部的值获取类似E_FAIL
人类可读的常量?HRESULT
COMException
在我的 C# 代码中,我希望能够记录COMException
s 以便不仅输出HRESULT
s 的十六进制表示(例如,0x80004005
),而且输出相应的 WinError.h 定义符号(例如E_FAIL
)。
如果我调用ToString()
异常参考,则只有十六进制表示。
是否有一种内置方法可以为对象内部的值获取类似E_FAIL
人类可读的常量?HRESULT
COMException
像这样使用COMException
'HResult
属性
unchecked
{
var msg = Marshal.GetExceptionForHR((int)0x80004005).Message;
}
看这里 - http://msdn.microsoft.com/en-us/library/windows/desktop/ms679351%28v=vs.85%29.aspx在 FORMAT_MESSAGE_FROM_SYSTEM。它返回有关传递的错误代码的人类可读消息。