Spec-Zone.ru › C++

std::set_terminate

Defined in header <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 должна завершать выполнение программы без возврата к своему вызывающему элементу, в противном случае поведение не определено.

Эта функция потокобезопасна. Каждый вызов std::set_terminate синхронизируется с (см. std::memory_order) последующими вызовами std::set_terminate и std::get_terminate.

(с C++11)

Параметры

f - указатель на функцию типа std::terminate_handler, или нулевой указатель

Возвращаемое значение

Ранее установленный обработчик завершения или значение нулевого указателя, если он не был установлен.

Пример

#include <cstdlib>
#include <exception>
#include <iostream>
 
int main()
{
    std::set_terminate([]()
    {
        std::cout << "Unhandled exception\n" << std::flush;
        std::abort();
    });
    throw 1;
}

Возможный вывод:

Unhandled exception
bash: line 7:  7743 Aborted                 (core dumped) ./a.out

См. также

terminate
функция, вызываемая при ошибке обработки исключений
(функция)
get_terminate
(C++11)
получает текущий обработчик завершения
(функция)
terminate_handler
тип функции, вызываемой std::terminate
(typedef)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/error/set_terminate

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API