c++ - std::rethrow(std::exception_ptr) 不工作
问题描述
在 JAVA 之后,我不得不处理 C++。最简单的例子,但它对我不起作用:
#include <iostream>
void handle_exceptions(std::exception_ptr e);
std::exception_ptr e;
int main()
{
try {
throw new std::exception("test");
}
catch (...) {
e = std::current_exception();
handle_exceptions(e);
}
} // END: main
void handle_exceptions(std::exception_ptr e)
{
try {
if (e) { std::rethrow_exception(e); }
}
catch (const std::exception & e) {
std::cerr << std::endl << e.what();
std::exit(0);
}
} // END: handle_exception()
std::rethrow 行生成未处理的异常: Возникло необработанное исключение по адресу 0x766A08B2 в ConsoleApplication1.exe: исключение Microsoft C++: std::exception по адресу памяти 0x00B
可能的 std::exception_ptr 不为 NULL。错误的内存访问,但为什么?
解决方案
改变
throw new std::exception("test");
至
throw std::exception("test");
顺便说一句,在我的情况下,带有“test”作为参数传递的 std::exception("test") 不能用 g++ 编译。
推荐阅读
- python - 如何将我的单词列表转换为可用类型以删除停用词列表
- python - Django在模板中传递家庭循环
- r - R,时间序列分解中的不完全元素
- php - Laravel5.8 我无法将数据存储到我的 sql server
- powershell - 在 powershell 中使用 get-childitem 时排除文件夹和文件
- ios - 在 Xcode 中使用 webview 时,应用程序确实返回到主登录目标页面
- sails.js - bodyParser 未在 Sails.js 中执行验证选项
- mysql - 根据某些条件返回行,如果没有行符合条件,则返回 mariadb sql 中的所有行
- powershell - PowerShell 开关仍在生成输出文件
- javascript - 如何将父组件状态数据传递给变量中的子组件