抛出的异常中的文本去了哪里
Where does the text in a thrown exception go?
可能重复:
如何从捕获的异常中打印消息?
如果这是基本的或重复的,我很抱歉——我先做了几次搜索,但没有找到任何答案。
如果我做一些基本的事情,比如:
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
这样的东西,它返回传递给构造函数的文本。
必须捕获异常才能查看字符串。有一个最后手段的异常处理程序可能很有用,如下所示:
int main(int argc, char **argv)
{
try {
...
}
catch(const std::exception& e) {
std::cout << "Uncaught exception: " << e.what() << std::endl;
}
}
在GUI应用程序中,您可以在主事件循环中使用catch语句,并在消息框中显示错误消息。
在事件驱动的非GUI应用程序中,您还可以在主事件循环中使用catch语句,并将错误消息写入日志文件。
这些方法将确保您看到所有异常。当然,大多数异常都应该在到达最后的异常处理程序之前被捕获。
相关文章:
- 文本文件中的单词链表
- 从命令行c++发送文本文件名
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 处理多个异常集合的C++方法
- 我在c++代码中生成了一个运行时#3异常
- 孤立代码块在结构中引发异常
- 如何将内容数组写入文本文件?
- C++中的赋值发生,尽管右侧出现异常
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 控制台中文本颜色异常
- 文本框为空时,C++Windows窗体应用程序出现未处理的异常错误
- 文本框为空时C++ Windows 窗体应用程序未处理的异常错误
- 尝试使用 fread 读取文本文件时发生 'System.AccessViolationException' 类型的未处理异常
- 抛出的异常中的文本去了哪里
- 打开 GL 文本显示时未处理的异常
- int 的文本赋值是否可以C++引发异常
- 基于文本的游戏中出现未处理的异常