c++ - 如何根据异常类防止终止处理程序中止
问题描述
我通过调用设置了新的终止处理函数:
std::set_terminate(TerminateHandler);
终止处理程序如下所示:
void TerminateHandler()
{
std::exception_ptr exptr = std::current_exception();
bool abort = true;
if(exptr != nullptr)
{
try
{
std::rethrow_exception(exptr);
}
catch(SoftMyException& ex){
std::cout << "Soft my exception";
abort = false;
}
catch(std::exception& ex)
{
std::cout << "Standard exception";
}
catch(...)
{
std::cout << "Terminated due to unknown exception";
}
}
else
{
std::cout << "Terminated due to unknown reason";
}
if(abort)
{
std::abort();
}
else{
std::cout << "Not abort";
}
}
这些自定义异常设置在共享库和主程序中。我想在 SoftException 到来时继续工作。SoftMyException 类的定义如下:
class SoftMyException : public std::exception{};
我的程序运行良好,但仍然没有调用中止事件 abort。
这里是否有任何选项可以调用某些函数以重新启动终止处理程序中的状态并继续工作而不中止取决于异常类?
解决方案
推荐阅读
- cmake - 我在 cmd 上构建简单的 hello world 应用程序时遇到错误“工具链无法构建虚拟 C 文件”
- installation - 在 Linux 上安装 SWI-Prolog 时遇到麻烦
- javascript - 下载触发器的奇怪问题
- excel - Excel VBA 说找不到我的下标
- reactjs - 状态未更新。我想从 Firestore 中获取数据
- dart - 一个mixin可以依赖另一个吗?
- python - 如何进行特征提取以建立情感分析模型?
- react-native - react native底部标签导航版4图标问题
- c# - 我只需要转换原始类型吗?
- mysql - 如何使用 sql 添加自动虚拟行