c++ - 抛出的异常中的文本去哪里了?

标签 c++ exception

<分区>

Possible Duplicate:
How to print message from caught exception?

如果这是基本的或重复的,我深表歉意 - 我先进行了几次搜索,但没有找到任何答案。

如果我做一些基本的事情,比如:

throw exception("This thing didn't work");

在哪里可以看到?该字符串不会显示在输出控制台、堆栈跟踪或与项目关联的任何 .log 文件中。让我想知道如果在任何地方都看不到它,为什么我还要在那里放一根绳子。我当然可以使用堆栈跟踪来查看它在哪里爆炸,但这种做法首先违背了出现异常的目的。

在 Java 中,当我给它一个字符串时,我会在某处的输出中看到该字符串。我只是想知道是否可以在 C++ 中重现此行为。

最佳答案

std::exception() 有一个名为 what() 的成员函数。见:

http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-3.3/classstd_1_1exception.html

对于像 std::logic_error 这样的事情,它返回您传递给构造函数的文本。

关于c++ - 抛出的异常中的文本去哪里了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11743981/

相关文章:

c++ - 带有 using-declarations 链接的程序在 MSVS 和 clang 上编译,但在 GCC 上不编译

c++ - Eigen 库,具有稀疏矩阵的简单线性代数运算增加了它们的分配大小

Android NDK 和 C++ 异常 : current status?

c++ - 为什么必须包含 <initializer_list> 才能使用 auto?

c++ - 类型检查 protected 标记 union

.net - 什么是 "+<>c__DisplayClassX"类型后缀,其中 X 是数字?

delphi - 测试强制转换 OleVariant 是否会引发异常(不引发异常)

java - 从 @ExceptionHandler 重定向不起作用

java - Twitter twitter4j 2.2.5 中的空指针异常

c++ - 将 C++ Lambda 存储在成员变量中以用作回调?