std::set_terminate
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| Определено в заголовочном файле <exception>
|
||
std::terminate_handler set_terminate( std::terminate_handler f ) throw(); |
(до C++11) | |
std::terminate_handler set_terminate( std::terminate_handler f ) noexcept; |
(начиная с C++11) | |
Делает f новой глобальной функцией обработчиком завершения и возвращает ранее установленный std::terminate_handler. f должна завершить выполнение программы, не возвращаясь к вызывающей программе, в противном случае поведение не определено.
|
Эта функция является потокобезопасной. Каждый вызов |
(начиная с C++11) |
Параметры
| f | — | указатель на функцию типа std::terminate_handler или нулевой указатель |
Возвращаемое значение
Ранее установленный обработчик завершения или нулевое значение указателя, если он не был установлен.
Пример
Запустить этот код
#include <iostream>
#include <cstdlib>
#include <exception>
int main()
{
std::set_terminate([](){
std::cout << "Необработанное исключение\n" << std::flush;
std::abort();
});
throw 1;
}
Возможный вывод:
Необработанное исключение
bash: line 7: 7743 Aborted (core dumped) ./a.out
Смотрите также
| функция, вызываемая при сбое обработки исключения (функция) | |
(C++11) |
получает текущий terminate_handler (функция) |
| тип функции, вызываемой из std::terminate (определение типа) |