终止引发异常的处理程序

dsaads

我们假设以下代码:

#include <exception>
#include <stdexcept>
#include <iostream>

using namespace std;

int main()
{
    set_terminate([]{throw runtime_error("");});
    throw runtime_error("oops");
}

N3797,§18.8.3.1[terminate.handler] / 2:必需的行为:Terminate_handler应终止程序的执行而不返回调用者。

这是不确定的行为。实际上会发生什么?

约翰·迪布林

这是不确定的行为。实际上会发生什么?

你不知道

您可以检查最终的机器代码,以确定在给定平台上实际发生的事情,但是没有。UB意味着您可能会脱离C ++标准。下次修补编译器,链接器,glibc或百万种其他内容时,您将获得完全不同的行为。您甚至可能会从一次运行中得到不同的行为。

编程中很少有“新手”,但我将承诺永远不要刻意编写和依赖未定义行为的行为

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从处理程序引发异常

Spring Boot异常处理程序:引发异常

即使在异常处理之后程序也会终止

我如何在try块中引发异常并终止程序

引发异常错误“终止称为...”

在上下文处理程序中重新引发异常

处理异常时引发异常

在从属任务中引发异常后如何终止多处理(在 Linux 下)?

如何提前退出/终止作业并处理 apscheduler 中引发的异常?

程序崩溃并显示消息“终止递归调用”,而不会引发任何异常

当引发意外异常时,为什么该程序不会被终止?

应用程序在负载终止时崩溃,并引发了NSException类型的未捕获异常

我自己的异常处理程序仍会引发异常并使应用程序崩溃

如何处理“ dparser”异常,该异常会终止Python中的程序?

使引发异常的代码不终止循环

程序以信号SIGABRT终止,异常终止

pdb事后调试:在异常处理程序中退出后跳转到引发异常

Web API 2-返回NotFound(); 与使用全局异常处理程序引发异常

访问异常时,过滤后的异常处理程序中的代码将引发NullReferenceException

正确终止程序。使用异常

程序异常终止turbo c

@ExceptionHandler不处理引发的异常

处理QPluginLoader :: load()引发的异常

WebBrowser引发未处理的异常

为什么我的错误处理程序不能处理异步中间件引发的异常?

ASP.NET MVC 应用程序 csc.exe 由于未处理的异常,进程被终止

在“尝试/捕获”内部,Visual Studio在未处理的异常上中断并终止了应用程序

程序在引发异常时挂起

如何处理异常子进程终止?