问题标签 [terminate-handler]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - set_terminate 函数对我不起作用
我从cplusplus.com获取以下代码:
由于代码中有未处理的异常,它需要调用 myterminate() 函数,该函数设置为终止处理程序并应该覆盖默认的终止处理程序。
程序崩溃但没有调用 myterminate()。我正在使用 Visual C++ 2008 速成版。
代码有什么问题?
python - 捕获错误并退出
在python中,有没有办法在测试条件后退出一个类,而不退出python?
说我有课
try/except` 不起作用,因为程序的其余部分在失败后不会终止。我基本上是在尝试捕获错误,并在显示错误时执行 python 的操作,但我不知道该怎么做
c++ - 用户提供的 terminate() 函数必须是线程安全的吗?
如http://en.cppreference.com/w/cpp/error/terminate中所述,调用终止的原因有很多。我可以想象其中一些原因几乎同时发生在两个线程中的情况。
Q1设置的终止函数std::set_terminate
是否可以同时调用两次或多次,同时我的意思是第二次调用在第一次结束之前开始。
Q2如果 Q1==YES,那么如果第一次终止结束会发生什么。我猜如果它以 std::abort 结束,那么程序结束,但是如果用户提供的 terminate 没有中止程序会发生什么?
Q3调用的终止函数是std::set_terminate
在导致终止调用的线程的上下文中设置的吗?
c# - 当软件以正常关闭 (X) 结束或抛出意外错误时如何执行函数
当正在运行的应用程序通过正常关闭方式(右上角 X)终止或发生意外错误并且软件终止时,我想执行一个函数。
我如何在 c# 4.5 WPF 应用程序中做到这一点
谢谢
c++ - 终止处理程序可以抛出异常吗?
以下程序的定义行为是什么(如果有)?
使用 gcc 和 clang 我得到以下输出:
示例在前几条评论后编辑。
(我不知道为什么我同时拥有throw;
和std::terminate();
。我不想改变这个例子,所以只是假装这两个中的一个在那里。)
c++ - 终止处理程序在哪个线程中调用?
在哪个线程中称为终止处理程序:
当函数内部抛出异常时
noexcept
?当用户调用
std::terminate
()?在启动或销毁
thread
?
它是否在标准中定义,我可以访问thread_local
对象吗?
c++ - 终止所有线程或当前正在运行的线程,使进程在 C++ 中保持活动状态
我想在收到停止消息时终止进程的所有当前正在运行的线程。但我希望进程继续运行以接受新请求。我使用 c++ std::thread 而不是 pthreads
c++ - 从终止处理程序访问所有未捕获的异常
我目前正在遵循 C++ 核心指南,将我的代码中的所有析构函数设置为noexcept
. 我的一些析构函数可能会抛出异常——在这种情况下,我希望程序崩溃并为我提供导致崩溃的详细信息。noexcept
在析构函数上设置说明符将调用std::terminate()
它依次调用默认值terminate_handler
。默认terminate_handler
将打印在析构函数中触发的异常。这在抛出另一个异常时未调用抛出析构函数的情况下非常有用。在那种情况下,我想terminate_handler
打印两个异常,这样我就可以知道是什么触发了错误处理路径。
问题是我似乎无法在标准库中找到获取未捕获异常的方法。有一个std::current_exception()
函数可以获取正在处理的异常并且std::uncaught_exceptions()
只获取未捕获异常的数量。我想std::exception_ptr
对未捕获的异常进行处理。那可能吗?
c++11 - 关于 set_terminate 的使用问题
我有下面的例子。(我的实际项目是一个多线程项目,我为所有项目设置了终止处理程序。)我有几个问题。
我的终止处理程序没有做任何花哨的事情。它只是说发生了错误并退出。我读到添加处理程序是一种好习惯。为什么会这样,在这种情况下我真的需要吗?
如果我没有处理程序,我会得到抛出的异常类型。
terminate called after throwing an instance of 'char const*'
但是当我使用处理程序时,我无法得到它。即使我使用 current_exception,我也无法获得异常的类型。(这里显然是 char*,但在我的情况下,它可能是任何东西,所以我无法正确捕捉。即使我使用 catch{...},消息和类型也会丢失)。反正有没有得到消息。如果没有消息,至少我可以获得抛出的异常类型吗?