◐ Shell
clean mode source ↗

std::set_terminate — cppreference.com

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

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

(начиная с 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

Смотрите также