2010-05-18 64 views
0

我最近將項目從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

+1

這看起來像一個錯誤。 – SLaks 2010-05-18 13:46:10

回答

0

這是一個Visual Studio 2010錯誤。

正如你可以在bug report看到,微軟再現了錯誤,並已決定推遲且沒有解決方法的分辨率。

歡迎您爲這個bug投票,也許微軟會決定儘快解決它。

-1

可能是因爲你沒有調用任何可能拋出的代碼。

+1

-1。正如我寫的,這是原始代碼的簡化版本。無論如何,這個警告與沒有任何代碼可能拋出的事實無關。 – brickner 2010-05-18 14:05:50

相關問題