我最近將項目從Visual Studio 2008升級到了Visual Studio 2010.當我在C++/CLI中捕獲異常時,爲什麼會得到CA1806?
通過在Release中啓用代碼分析和編譯,我得到了警告CA1806:不要忽略方法結果。
我已經成功地減少產生警告此代碼代碼:
.h文件中:
public ref class Foo
{
public:
void Bar();
};
.cpp文件:
void Foo::Bar()
{
try
{
}
catch (const std::exception&) // here I get the warning
{
}
}
警告:
CA1806:Microsoft.Usage: '富::酒吧(無效)' 調用 '全球:: __ CxxRegisterExceptionObject(void *的, 無效*)',但不使用HRESULT 或錯誤代碼,該方法返回。 這可能會導致意外行爲 處於錯誤狀態或資源不足 的情況。使用 條件語句中的結果,將 結果賦值給變量,或將其作爲參數 傳遞給另一個方法。
如果我嘗試使用異常值或做catch(...)
警告仍然出現。如果我捕獲受管異常或者在Debug中編譯,我不會收到警告。
爲什麼我會收到此警告?
UPDATE
我決定開a bug report on Microsoft Connect。
這看起來像一個錯誤。 – SLaks 2010-05-18 13:46:10