Exceções e manipulação de exceção (guia de programação C#)

Exceção do linguagem translation from VPE for Csharp manipular recursos ajudam você lida com qualquer situações excepcionais ou inesperadas que ocorrem quando um programa está sendo executado.Manipulação de exceção usa o try, catch, e finally palavras-chave para tentar executar ações que podem não ter êxito, para lidar com falhas quando você decidir que é razoável para fazer isso e para limpar recursos posteriormente. Exceções podem ser geradas pelo common linguagem tempo de execução (CLR), o .NET estrutura ou quaisquer bibliotecas de terceiros, 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 possui telefonar ed diretamente, mas por outro método ainda mais para baixo no telefonar pilha.Quando isso acontece, o CLR irá desenrolar a pilha, procurando por um método com um catch bloco para exceção específica tipo e ele serão executado na primeira tal catch bloco que se encontra. Se ele encontrar nenhum apropriado catch bloco em qualquer lugar no telefonar pilha, ele irá terminar o processo e exibir uma mensagem ao usuário.

Neste exemplo, um método testa 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 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 com as seguintes propriedades:

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

  • Use um try bloco em torno de instruções que podem lançar exceções.

  • Quando ocorre uma exceção no try bloquear o fluxo de controle vai para o manipulador de exceção associada primeiro presente em qualquer lugar no telefonar pilha. Em translation from VPE for Csharp, o catch palavra-chave é usada para definir um manipulador de exceção.

  • Se nenhum manipulador de exceções para uma determinada exceção estiver presente, o programa pára de executar com uma mensagem de erro.

  • A menos que você pode manipulá-lo e deixe o aplicativo em um estado conhecido, não capturar uma exceção.Se você capturar System.Exception, relançá-lo usando o throw palavra-chave no participante do catch bloco.

  • If a catch bloco define uma variável de exceção, você pode usá-los para obter mais informações sobre o tipo de exceção que ocorreu.

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

  • Objetos exceção contêm informações detalhadas sobre o erro, sistema autônomo o estado da pilha de chamadas e uma descrição de texto do erro.

  • Código em um finally bloco é executado mesmo que uma exceção é lançada. Use um finally bloco para liberar recursos, por exemplo, para fechar quaisquer fluxos ou arquivos que foram abertos no try bloco.

  • Exceções gerenciadas no .NET estrutura são implementadas do mecanismo de manipulação de exceções estruturado Win32.Para obter mais informações, consulte Structured Exceção Manipulação (C++) e Um curso intensivo sobre a fundo o Win32 estruturado manipulação de exceção.

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 as seções a seguir no Especificação da linguagem C#:

  • 8.9.5 A demonstrativo throw

  • 8.10 A instrução try

  • 16 Exceções

Consulte também

Conceitos

Guia de Programação C#

Visão Geral das Exceções

Referência

Palavras-chave C#

Descartar referência (C#)

try-catch (Referência do C#) 

try-finally (Referência do C#)

try-catch-finally (translation from VPE for Csharp Reference)

Outros recursos

Diretrizes de design para exceções

Tratamento e lançamento de exceções

Escrevendo código .NET confiável

Date

History

Motivo

Julho de 2008

Exemplo de código modificado e texto adicionado sobre desenrolar a pilha.

Correção de bug do conteúdo.

Julho de 2008

Exemplo adicional para explicação sobre o finally bloco.

Aprimoramento de informações.

Julho de 2008

Informações sobre o Win32 adicionadas estruturada de mecanismo de manipulação de exceção.

Aprimoramento de informações.