Quando um manipulador de terminação do C ++ é o Right Thing (TM)?

O padrão C ++ fornece ostd::set_terminate função que permite especificar qual funçãostd::terminate deve realmente ligar.std::terminate só deve ser chamado em circunstâncias terríveis, e com certeza as situações que o padrão descreve para quando é chamado são terríveis (por exemplo, uma exceção não identificada). Quandostd::terminate A situação parece análoga a estar sem memória - não há muito o que você possa fazer de forma sensata.

Eu li que ele pode ser usado para garantir que os recursos sejam liberados - mas para a maioria dos recursos isso deve ser tratado automaticamente pelo sistema operacional quando o processo é encerrado (por exemplo, identificadores de arquivo). Teoricamente eu posso ver um caso para se dizer, você precisava enviar um servidor uma mensagem específica ao sair devido a uma falha. Mas a maior parte do tempo, o manuseio do sistema operacional deve ser suficiente.

Quando está usando um manipulador de terminação a Coisa Certa (TM)?

Atualizar:As pessoas interessadas no que pode ser feito com manipuladores de terminação personalizados podem achar útil esse truque não portátil.

questionAnswers(3)

yourAnswerToTheQuestion