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)?