C# UnhandledException

Resumo : neste tutorial, você aprenderá sobre C# UnhandledExceptione 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...catchbloco:

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 trybloco pode causar uma exceção. E o catchbloco trata a exceção se ela ocorrer.

O catchbloco 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.UnhandledExceptionevento. 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 Mainmétodo assina o AppDomain.UnhandledExceptionevento. Se ocorrer uma exceção, mas nenhum manipulador estiver disponível para capturá-la, o HandleExceptionmé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.UnhandledExceptionevento para lidar com exceções não tratadas.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *