捕获异常后无法决定要打印的消息
Can't decide what message to print after catching an exception
这是代码:
#include <iostream>
#include <exception>
using namespace std;
class excp1:exception
{
public:
virtual const char* what() const throw()
{
return "Bad ass exception";
}
};
int main(int argc, char **argv)
{
try
{
if(1!=0)
throw new excp1();
}
catch(excp1& e)
{
cerr<<e.what();
}
return 0;
}
但它并没有打印我输入的返回值("Bad ass exception"),而是打印:
Terminate called after throwing an instance of' excp1*'
Aborted
如何打印我想要的内容?
您应该通过值抛出异常并通过引用捕获它。
你应该有:
throw excp1();
抛出具有动态内存分配的指针类型会泄漏内存,并导致未定义的行为。
我认为您遇到了一个类型问题:
你扔了一个excp*
,却接住了一个excp
。
尝试将其更改为:
throw excp1;
取出"new"。你的catch不是在捕捉指针,而是在捕捉引用,所以它看着指针说"我?不可能。"
相关文章:
- 在线编译器中的分段C++没有打印消息
- 为什么没有打印错误消息
- 从函数打印 CLI 帮助消息后,我应该如何干净地退出 C++ 程序?
- 奇怪的消息 (_Base_bitset::_M_do_to_ulong) 从溢出异常处理程序中打印出来
- QMqtt订阅者不打印收到的消息
- 打印窗口发送消息WM_PAINT或WM_PRINT
- QT打印二进制树指令消息
- 为什么在打印消息时名称会打印两次?
- Android Studio,CMake.如何在编译时打印调试消息
- 如何将消息发送到缓冲区并反向打印前三个单词的消息
- C++代码在 Gedit 中有效,但在 VS 中不起作用(它只是打印"按任意键退出......"。消息)
- 打印向量元素错误消息
- 我可以在 Xcode 的消息/警告中打印出预处理器值吗?
- C++ 仅搜索一次矢量时打印出"not found"消息
- Electron-无日志消息由C++文件中的log(INFO)打印
- 在c++中,当我使用具有cout的函数时,如何避免打印消息
- 如何使用带2个参数的void函数多次打印消息
- 为什么在Qt C++关闭主窗口后打印消息
- 禁止从 const 方法打印消息
- 使用c++在内核模块中打印消息