Я недавно обновил свой проект с Visual Studio 2008 до Visual Studio 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 *) ', но не использует HRESULT
или код ошибки, который возвращает метод.
Это может привести к неожиданному поведению
в условиях ошибки или низкого ресурса
ситуации. Используйте результат в
условное утверждение, присвойте
привести к переменной или передать ее как
аргумент другого метода.
Если я пытаюсь использовать значение исключения или сделать catch(...)
, появляется предупреждение все еще . Если я перехватываю управляемые исключения или компилирую в Debug, я не получаю предупреждение.
Почему я получаю это предупреждение?
UPDATE
Я решил открыть отчет об ошибке в Microsoft Connect .