基于此SO答案:Catching COMException specific Error Code,我想知道,如果我只需要查看异常的特定部分,就可以跨操作系统和OL的多个版本正确处理COMException。例如,
private const uint HRESULT_OPERATIONABORTED = 0x80004004;
// ...
try {
// something that could throw COMExceptions
} catch (System.Runtime.InteropServices.COMException e) {
switch ((uint)e.ErrorCode) {
case HRESULT_OPERATIONABORTED:
break;
default:
break;
}
}
这是否足够跨平台,还是有必要仅考虑错误代码的一部分?
编辑-为了澄清,我的确切问题是比较
(uint)e.ErrorCode
和0x80004004
是否太具体(也就是说,对于这个特定错误,无论是否使用OS / OL,我是否总是得到0x80004004
),或者如果这是做事的正确方法。 最佳答案
就跨平台兼容性而言,您几乎不必担心,COM仅在Windows上运行。同样,错误代码是定义良好的代码。您可以在WinError.h SDK头文件中查找标准COM错误代码。是E_ABORT。我建议您实际使用该标识符。
您可以在c:\ program files \ microsoft sdks \ windows \ v6.0 \ include中找到此标头。 VS2010是v7.0。