try
{
// call to Com Method
}
catch (COMException e)
{
if (e.ErrorCode == 0x80040154) // REGDB_E_CLASSNOTREG.
{
// handle this error.
}
}
我想检查是否由于REGDB_E_CLASSNOTREG
而抛出了com异常然后处理它。我尝试使用上面的代码,但它会发出警告:
Comparison to integral constant is useless; the constant is outside the range of type 'int'
我认为此错误是由于0x80040154
不在Int32范围内。
你能建议任何可能的解决方案吗?或者还有其他方法可以检查吗?
答案 0 :(得分:3)
使用未选中的关键字:
catch (COMException ex) {
if (ex.ErrorCode == unchecked((int)0x80040514)) {
//...
}
}
答案 1 :(得分:1)
与其整数等价物相比可以正常工作:
if (e.ErrorCode == -2147287036) // REGDB_E_CLASSNOTREG.
{
// handle this error.
}
答案 2 :(得分:0)
您还可以尝试使用“异常消息/错误消息”中显示的某些文本,如下所示
try
{
// call to Com Method
}
catch (COMException e)
{
if (e.ToString().Contains("Your Error Text here")) // REGDB_E_CLASSNOTREG.
{
// handle this error.
}
}