Exceptions and Exception Handling (C# Programming Guide)

Manipular exceções com os recursos do C# ajuda você que lida com qualquer situação inesperada ou excepcional que pode ocorrer quando um programa está sendo executado. Usos de manipulação de exceção de try, catch, e finally palavras-chave para testar as ações que podem não ter êxito, para lidar com falhas quando você decidir que é razoável para fazer isso e limpar recursos posteriormente. As exceções podem ser geradas pela Common Language Runtime (CLR), por quaisquer bibliotecas de terceiros, pelo .NET Framework ou pelo código do aplicativo. Exceções são criadas usando o throw palavra-chave.

Em muitos casos, uma exceção pode ser lançada não por um método que seu código tenha chamado diretamente, mas por outro método ainda mais à baixo na pilha de chamadas. Quando isso acontece, o CLR será desenrolamento de pilha, procurando um método com um catch Bloquear para o tipo específico de exceção e ele executará a primeira tais catch Bloquear que se localiza. Se encontrar não apropriado catch Bloquear em qualquer lugar na pilha de chamadas, ele irá finalizar o processo e exibir uma mensagem ao usuário.

Neste exemplo, um método testa uma divisão por zero e captura o erro. Sem o tratamento de exceção, este programa deve terminar com um DivideByZeroException estava sem tratamento erro.

class ExceptionTest
{
    static double SafeDivision(double x, double y)
    {
        if (y == 0)
            throw new System.DivideByZeroException();
        return x / y;
    }
    static void Main()
    {
        // Input for test purposes. Change the values to see
        // exception handling behavior.
        double a = 98, b = 0;
        double result = 0;

        try
        {
            result = SafeDivision(a, b);
            Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
        }
        catch (DivideByZeroException e)
        {
            Console.WriteLine("Attempted divide by zero.");
        }
    }
}

Visão Geral das Exceções

Exceções têm as seguintes propriedades:

  • As exceções são os tipos derivam, por fim, todos os System.Exception.

  • Use um try Bloco de declarações de que pode lançar exceções.

  • Quando ocorre uma exceção no try Bloquear, o fluxo de controle de saltos para o manipulador de exceção associada primeiro que está presente em qualquer lugar na pilha de chamada. Em C# a catch palavra-chave é usada para definir um manipulador de exceção.

  • Se nenhum manipulador de exceção para uma determinada exceção estiver presente, o programa pára a execução de uma mensagem de erro.

  • Não capturar uma exceção a menos que você possa manipulá-la e deixar a aplicação em um estado conhecido Se detectar os System.Exception, relançá-lo usando o throw palavra-chave no final o catch bloco.

  • Se um catch bloco define uma variável de exceção, você pode usá-lo para obter mais informações sobre o tipo de exceção ocorrida.

  • Exceções podem ser geradas explicitamente por um programa usando o throw palavra-chave.

  • Objetos Exception contêm informações detalhadas sobre o erro, como, por exemplo, o estado da pilha de chamadas e uma descrição de texto do erro.

  • O código em um finally bloco é executado mesmo se uma exceção é lançada. Use um finally bloco para liberar recursos, por exemplo fechar todos os fluxos ou arquivos que foram abertos a try bloco.

  • Gerenciado de exceções na.NET Framework são implementados na parte superior da mecanismo de manipulação de exceção do Win32 estruturado. Para obter mais informações, consulte Structured Exception Handling (C++) e A Crash Course on a profundidades de Win32 Structured Exception Handling.

Seções relacionadas

Consulte os tópicos a seguir para obter mais informações sobre exceções e manipulação de exceção:

Especificação da linguagem C#

Para obter mais informações, consulte C# Language Specification A especificação de linguagem é a fonte definitiva para a sintaxe e o uso de C#.

Consulte também

Referência

C# Keywords

throw (C# Reference)

try-catch (C# Reference)

try-finally (C# Reference)

Tente catch de--finalmente (referência de C#)

Conceitos

C# Programming Guide

Tratamento e lançamento de exceções

Tratamento e lançamento de exceções

Outros recursos

Diretrizes de design para exceções

Como gravar código.NET Code

minidespejos para exceções específicas