当我在C ++ / CLI中捕获异常时,为什么会获得CA1806?

时间:2010-05-18 13:31:27

标签: visual-studio-2010 c++-cli code-analysis fxcop

我最近将我的项目从Visual Studio 2008升级到Visual Studio 2010。

通过在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:   'Foo :: Bar(无效)'来电   “全球:: __ CxxRegisterExceptionObject(void *的,   void *)'但不使用HRESULT   或该方法返回的错误代码。   这可能会导致意外行为   在错误的条件下或资源不足   的情况。在a中使用结果   条件语句,分配   结果变量,或传递给它   另一种方法的论据。

如果我尝试使用例外值或执行catch(...)警告仍然。如果我捕获托管异常或在Debug中编译,我就不会收到警告。

为什么我会收到此警告?

更新

我决定开放a bug report on Microsoft Connect

2 个答案:

答案 0 :(得分:0)

这是Visual Studio 2010的错误。

正如您在bug report中看到的那样,Microsoft再现了该错误,并决定推迟解决该问题。

欢迎您投票支持该错误,因此微软可能会决定尽快解决它。

答案 1 :(得分:-1)

可能是因为你没有调用任何可能抛出的代码。