首页 > 解决方案 > 有什么方法可以使 Visual Studio C++ 错误输出有用吗?

问题描述

在处理 C++ 项目时,我发现 VS19 的输出毫无用处。考虑在新安装的 VS19 上运行示例代码:

#include <iostream>  

using namespace std;
class My
{
    public:
    void f() noexcept
    {
        throw exception{"A problem sir!"};
    }
};

int main() 
{
    try 
    {
        My m;
        m.f();
    }
    catch (exception& ex)
    {
        cout << "exception caught! " << ex.what() << endl;
    }
    return 0;
}

我想收到的是:“函数在标记为 noexcept 时引发异常”,并且光标设置在有问题的行上。我得到的是一个带有一些一般文本的新窗口,其中没有提到问题,或者问题出在哪里。

标签: c++visual-studiovisual-studio-debugging

解决方案


您指定了什么编译器警告级别?如果我使用该/W0选项,则没有诊断但具有任何其他值,/W1通过/W4,编译器输出以下行:

1>filename.cpp(9,1): warning C4297:  'My::f': function assumed not to throw an exception but does
1>filename.cpp(9,1): message :  __declspec(nothrow), throw(), noexcept(true), or noexcept was specified on the function

注意:诊断消息包括行号和列号。如果您双击错误消息,它会将光标移动到有问题的行。


推荐阅读