# std::set_terminate

From cppreference.com
< cpp‎ | error

Defined in header `<exception>` |  |
std::terminate_handler set_terminate( std::terminate_handler f ); |  |

Makes `f` the new global terminate handler function and returns the previously installed std::terminate_handler.

This function is thread-safe. Every call to `std::set_terminate` synchronizes-with (see std::memory_order) the subsequent `std::set_terminate` and std::get_terminate | (since C++11)

### Parameters

f | - | pointer to function of type std::terminate_handler, or null pointer

### Return value

The previously-installed terminate handler, or a null pointer value if none was installed.

### Exceptions

(none) | (until C++11)
`noexcept` specification: noexcept | (since C++11)

### Example

Run this code

    #include <iostream>
    #include <cstdlib>
    #include <exception>

    int main()
    {
        std::set_terminate([](){ std::cout << "Unhandled exception\n"; std::abort();});
        throw 1;
    }

Possible output:

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

### See also

terminate | function called when exception handling fails (function)
get_terminate (C++11) | obtains the current terminate_handler (function)
terminate_handler | the type of the function called by std::terminate (typedef)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/error/set_terminate&oldid=91394"
Category:

- unconditionally noexcept

Hidden categories:

- Pages with unreviewed unconditional noexcept template
- Pages with unreviewed noexcept template