我最近将我的项目从Visual 2008升级到了Visual 2010。
通过启用代码分析并在发行版中编译,我得到警告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(void)‘调用'Global::__CxxRegisterExceptionObject(void*,void*)’,但不使用方法返回的HRESULT或错误代码。这可能导致在错误条件或低资源情况下的意外行为。在条件语句中使用结果,将结果赋值给变量,或将其作为参数传递给另一个方法。
如果我尝试使用异常值或执行catch(...),则会出现警告仍然。如果我捕获托管异常,或者在调试中编译,我就不会收到警告。
为什么我会收到这个警告?
更新
我决定开关于Microsoft的错误报告。
发布于 2010-05-29 08:23:22
发布于 2010-05-18 14:01:37
可能是因为你没有调用任何可以抛出的代码。
https://stackoverflow.com/questions/2857677
复制相似问题