代码之家  ›  专栏  ›  技术社区  ›  brickner

为什么我在C++/CLI中遇到异常时得到CA1806?

  •  0
  • brickner  · 技术社区  · 15 年前

    我最近将我的项目从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。用法: “foo::bar(void)”调用 '全局:':uuuxRegisterExceptionObject(void*, void*)'但不使用hresult 或方法返回的错误代码。 这可能导致意外行为 出错或资源不足 情况。将结果用于 条件语句,指定 结果为变量,或将其作为 其他方法的参数。

    如果我尝试使用异常值或 catch(...) 警告 仍然 出现。如果我改为捕获托管异常或在调试中编译,则不会收到警告。

    为什么我会收到这个警告?

    更新

    我决定开门 a bug report on Microsoft Connect .

    2 回复  |  直到 15 年前
        1
  •  0
  •   brickner    15 年前

    这是一个Visual Studio 2010错误。

    正如你在 bug report ,微软复制了这个bug,并决定在没有解决方法的情况下推迟解决。

    欢迎您投票支持这个bug,这样微软可能会决定尽快解决它。

        2
  •  -1
  •   Puppy    15 年前

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