我最近将我的项目从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中编译,我就不会收到警告。
为什么我会收到此警告?
更新
答案 0 :(得分:0)
这是Visual Studio 2010的错误。
正如您在bug report中看到的那样,Microsoft再现了该错误,并决定推迟解决该问题。
欢迎您投票支持该错误,因此微软可能会决定尽快解决它。
答案 1 :(得分:-1)
可能是因为你没有调用任何可能抛出的代码。