Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O Common Language Runtime permite que a maioria das exceções sem tratamento em threads prossiga naturalmente. Na maioria dos casos, isso significa que a exceção sem tratamento faz com que o aplicativo seja encerrado. No entanto, o common language runtime fornece um backstop para determinadas exceções sem tratamento que são usadas para controlar o fluxo do programa:
Uma ThreadAbortException é gerada em um thread porque Abort foi chamado. Isso só se aplica a aplicativos do .NET Framework.
Um AppDomainUnloadedException é gerado em um thread, pois o domínio do aplicativo no qual o thread está em execução está sendo descarregado.
O common language runtime ou um processo de host encerra o thread gerando uma exceção interna.
Se qualquer uma dessas exceções estiver sem tratamento em threads criados pelo common language runtime, a exceção encerrará o thread, mas o common language runtime não permitirá que a exceção prossiga ainda mais.
Se essas exceções não forem tratadas no thread principal ou em threads que inseriram o runtime do código não gerenciado, elas continuarão normalmente, resultando no encerramento do aplicativo.
Observação
É possível que o runtime gere uma exceção sem tratamento antes que qualquer código gerenciado tenha tido a chance de instalar um manipulador de exceção. Embora o código gerenciado não tenha tido nenhuma chance de lidar com essa exceção, a exceção tem permissão para prosseguir naturalmente.
Expor problemas de threading durante o desenvolvimento
Quando os threads têm permissão para falhar silenciosamente, sem encerrar o aplicativo, problemas sérios de programação podem passar sem ser detectados. Esse é um problema específico para serviços e outros aplicativos que são executados por longos períodos. À medida que os threads falham, o estado do programa gradualmente fica corrompido. O desempenho do aplicativo pode diminuir ou o aplicativo pode ficar sem resposta.
Permitir que exceções sem tratamento em threads prossigam naturalmente, até que o sistema operacional encerre o programa, expõe esses problemas durante o desenvolvimento e o teste. Relatórios de erros em depuração de suporte de encerramentos do programa.
Substituição do host
Um host não gerenciado pode usar a interface ICLRPolicyManager na API de Hospedagem para substituir a política de exceção sem tratamento padrão do common language runtime. A função ICLRPolicyManager::SetUnhandledExceptionPolicy é usada para definir a política para exceções sem tratamento.