【发布时间】:2020-03-27 10:26:20
【问题描述】:
我希望有人可以帮助我。我有一个来自 COM 的特定异常,我需要捕获它然后尝试做其他事情,所有其他的都应该被忽略。我的异常错误消息是:
System.Runtime.InteropServices.COMException (0x800A03EC):Microsoft Office Excel 无法访问文件“C:\test.xls”。 有几个可能的原因:
所以我最初的尝试是
try
{
// something
}
catch (COMException ce)
{
if (ce.ErrorCode == 0x800A03EC)
{
// try something else
}
}
然后我读到了编译器警告:
警告 22 与积分比较 常数是无用的;常数是 超出类型范围 'int' .....ExcelReader.cs 629 21
现在我知道 0x800A03EC 是 HResult,我刚刚在 MSDN 上看过 并阅读:
HRESULT 是一个 32 位的值, 分为三个不同的领域: 严重性代码、设施代码和 错误代码。严重性代码 表示是否返回值 表示信息、警告或 错误。设施代码标识 负责的系统区域 错误。
所以我的最终问题是,我如何确保捕获该特定异常?或者如何从 HResult 中获取错误代码?
提前致谢。
【问题讨论】:
-
只是为了添加注释。重现此异常并不容易,因为我需要一个非常具体的配置来做到这一点,我正在努力,但我认为在这里询问可能会更快:)