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