Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Common Language Runtime permite que a maioria das exceções não tratadas em threads prossiga naturalmente. Na maioria dos casos, isso significa que a exceção não tratada faz com que o aplicativo seja encerrado. No entanto, o common language runtime fornece um backstop para certas exceções não tratadas que são usadas para controlar o fluxo do programa:
A ThreadAbortException é lançada numa thread porque Abort foi chamado. Isso só se aplica a aplicativos .NET Framework.
Um AppDomainUnloadedException é lançado num thread porque o domínio da aplicação no qual o thread está a ser executado está a ser descarregado.
O common language runtime ou um processo de host encerra o thread lançando uma exceção interna.
Se qualquer uma dessas exceções não for tratada 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.
Se essas exceções não forem tratadas no thread principal ou em threads que entraram no tempo de execução a partir de código não gerenciado, elas prosseguirão normalmente, resultando no encerramento do aplicativo.
Observação
É possível que o tempo de execução lance uma exceção não tratada antes que qualquer código gerenciado tenha tido a chance de instalar um manipulador de exceções. Mesmo que o código gerenciado não tenha tido a chance de lidar com tal exceção, a exceção é permitida para prosseguir naturalmente.
Expor problemas de multithreading durante a fase de desenvolvimento
Quando os threads podem falhar silenciosamente, sem encerrar o aplicativo, sérios problemas de programação podem passar despercebidos. Este é um problema particular para serviços e outros aplicativos que são executados por longos períodos. À medida que os threads falham, o estado do programa torna-se gradualmente corrompido. O desempenho do aplicativo pode se degradar ou o aplicativo pode deixar de responder.
Permitir que exceções não tratadas em threads prossigam naturalmente, até que o sistema operacional encerre o programa, expõe tais problemas durante o desenvolvimento e o teste. Relatórios de erros sobre encerramentos de programas auxiliam na depuração.
Substituição do servidor
Um host não gerenciado pode usar a interface ICLRPolicyManager na API de Hospedagem para substituir a política de exceção não tratada padrão do Common Language Runtime. A função ICLRPolicyManager::SetUnhandledExceptionPolicy é usada para definir a política para exceções não tratadas.