Pergunta

Um programa C # é invocado por:

Application.Run (new formClass ());

Eu gostaria de colocar um try / catch em torno de toda a coisa para prender qualquer exceções.Ele. Quando eu colocá-lo em torno deste método Run, exceções não são capturados; controlar apenas retorna aqui quando o termina programa depois de uma exceção não capturada.

Onde posso colocar try / catch para cobrir todo o programa? Obrigado!

Foi útil?

Solução

Para capturar exceções não tratadas hook-up do Windows Form o AppDomain.UnhandledException e eventos Application.ThreadException .

De interesse: erros inesperados em aplicativos gerenciados

Outras dicas

Basicamente, você não pode capturar todas as exceções quando se utiliza o processo de CLR padrão de hospedagem. Período. Isso ocorre porque o AppDomain.UnhandledException evento é apenas uma notificação , não é possível tratar a exceção (o que significa que não é possível impedir que a aplicação seja terminada após o processamento da notificação).

No entanto, você pode pegar e tratar todas as exceções no segmento interface do usuário de um aplicativo WinForms usando a sua Application.ThreadException manipulador (e controlar o comportamento via UnhandledExceptionMode ). Outros tópicos que lançam uma exceção não vai ser pego por esse manipulador.

Em geral, não é uma boa idéia para tentar lidar com todas as exceções. Você pode, no entanto, usar o AppDomain.UnhandledException para registrar o erro e / ou executar tarefas importantes de limpeza (por exemplo, desligar um databaseor baseado em arquivo o que for).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top