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