gpt4 book ai didi

c++ - std::exception 的 what() 返回 "std::exception"

转载 作者:可可西里 更新时间:2023-11-01 15:00:50 25 4
gpt4 key购买 nike

这里的 Java 人一直在做一些 C++。我正在捕获一个异常并试图诊断它来自哪里(遗憾的是当通过 gdb 运行时没有抛出异常)。但是,当我打印出异常的 what() 时,我只是得到字符串“std::exception”。这是特定于标准库中的任何东西还是很多标准异常都返回这个?这是我要打印的内容:

    } catch (const std::exception & ex) {
std::cout << ex.what() << std::endl;
}

输出只是:

std::exception

另外,我在一个相当大的代码库中工作,这可能是我们这边的一些异常,但我还没有通过常规搜索技术找到它,所以我目前倾向于这个即将到来的来自标准库。

如果相关的话,我正在使用 g++ 4.8。

最佳答案

这可能是因为两件事:

  1. 有人只是在某处throw std::exception(),这不是很有帮助。

  2. 派生自 std::exception 的类被复制到 std::exception。这是一个名为 Object Slicing 的问题.

实际上我自己犯了第二个错误。我有这段代码:

try
{
// Some Boost stuff
}
catch (std::exception e)
{
cerr << e.what() << endl;
}

您必须确保执行 std::exception& e。我知道您没有犯这个错误,但有可能其他人在代码中做了更进一步的事情(或者来自 Google 的人)。

关于c++ - std::exception 的 what() 返回 "std::exception",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com