Resumo : neste tutorial, você aprenderá sobre C# UnhandledException
e como fornecer um manipulador de exceções global.
Introdução à UnhandledException do C#
Em C#, uma exceção não tratada é uma exceção que ocorre, mas não possui um manipulador de exceção correspondente. Se a exceção permanecer sem tratamento, o programa irá travar.
Normalmente, quando ocorre uma exceção, o tempo de execução do .NET procurará um manipulador de exceção que possa tratar a exceção. Se não conseguir encontrar um, o tempo de execução encerra o aplicativo e exibe uma mensagem de erro.
Para evitar que isso aconteça, você pode tratar a exceção no seu código usando o try...catch
bloco:
try
{
// Code that might throw an exception
}
catch (Exception ex)
{
// Code that handles the exception
}
Linguagem de código: C# ( cs )
Neste exemplo, o código no try
bloco pode causar uma exceção. E o catch
bloco trata a exceção se ela ocorrer.
O catch
bloco pode tratar a exceção registrando o erro, relançando a mesma ou uma nova exceção ou executando outras ações.
Para fornecer um manipulador de exceção global, você pode assinar o AppDomain.UnhandledException
evento. Este evento é gerado sempre que ocorre uma exceção não tratada. Por exemplo:
using static System.Console;
int Divide(int a, int b)
{
return a / b;
}
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(HandleException);
// cause an exception
var result = Divide(10, 0);
WriteLine(result);
static void HandleException(object sender, UnhandledExceptionEventArgs e)
{
WriteLine($"Sorry, there was a problem occurs. The program is terminated. \n {e.ExceptionObject}");
}
Linguagem de código: C# ( cs )
Neste exemplo, o Main
método assina o AppDomain.UnhandledException
evento. Se ocorrer uma exceção, mas nenhum manipulador estiver disponível para capturá-la, o HandleException
método será executado para tratar a exceção.
Ao fazer isso, você pode evitar que seu programa trave e proporcionar uma melhor experiência ao usuário.
Resumo
- Se ocorrer uma exceção, mas nenhum manipulador for encontrado, o tempo de execução do .NET procurará um manipulador de exceção global.
- Inscreva-se no
AppDomain.UnhandledException
evento para lidar com exceções não tratadas.