Стандарт C ++ предоставляет функцию std::set_terminate
, которая позволяет указать, какая функция std::terminate
должна на самом деле вызывать. std::terminate
следует вызывать только в ужасных обстоятельствах, и, конечно же, ситуации, описанные в стандарте при его вызове, ужасны (например, неперехваченное исключение). Когда std::terminate
все же вызывается, ситуация кажется аналогичной нехватке памяти - на самом деле вы мало что можете сделать с умом.
Я читал, что его можно использовать, чтобы убедиться, что ресурсы освобождены, но для большинства ресурсов это должно обрабатываться ОС автоматически при выходе из процесса (например, дескрипторы файлов). Теоретически я вижу случай, если, скажем, вам нужно было отправить серверу определенное сообщение при выходе из-за сбоя. Но в большинстве случаев работы с ОС должно быть достаточно.
Когда используется обработчик прерывания Right Thing (TM)?