如何检查REGDB_E_CLASSNOTREG的错误代码?

时间:2011-10-17 06:42:32

标签: c# com exception-handling comexception

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范围内。

你能建议任何可能的解决方案吗?或者还有其他方法可以检查吗?

3 个答案:

答案 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.
    }
 }