2
try
{
    // call to Com Method
}
catch (COMException e)
{
    if (e.ErrorCode == 0x80040154) // REGDB_E_CLASSNOTREG.
    {
       // handle this error.
    }
}

それを処理するためにcom例外がスローされるかどうかを確認したいと思いREGDB_E_CLASSNOTREGます。上記のコードで試しましたが、警告が表示されます。

Comparison to integral constant is useless; the constant is outside the range of type 'int'

このエラーは0x80040154Int32の範囲にないことが原因だと思います。

考えられる解決策を提案できますか?またはこれを確認する他の方法はありますか?

4

3 に答える 3

3

チェックされていないキーワードを使用します。

        catch (COMException ex) {
            if (ex.ErrorCode == unchecked((int)0x80040514)) {
                //...
            }
        }
于 2011-10-17T12:46:04.603 に答える
1

同等の整数との比較は正常に機能します。

if (e.ErrorCode == -2147287036) // REGDB_E_CLASSNOTREG.
{
   // handle this error.
}
于 2011-10-17T12:11:14.297 に答える
0

次のような例外メッセージ/エラーメッセージに表示されるテキストを使用して試すこともできます

try
 {  
   // call to Com Method
 } 
catch (COMException e) 
{ 
    if (e.ToString().Contains("Your Error Text here")) // REGDB_E_CLASSNOTREG. 
    {   
     // handle this error.
    }
 } 
于 2011-10-17T06:46:26.877 に答える