Compartilhar via


try-finally (C# Reference)

O finally bloco é útil para limpar todos os recursos alocados a tente bloquear, bem como executar qualquer código que deve ser executado mesmo se houver uma exceção. Controle sempre é passado para o bloco finally independentemente de como o bloco try sai.

Enquanto catch é usado para manipular exceções que ocorrem em um bloco de instrução, finally é usado para garantir um bloco de código é executado independentemente de como precedente try bloco for encerrado.

Exemplo

Neste exemplo, há uma instrução de conversão inválido faz com que uma exceção. Quando você executa o programa, você receberá uma mensagem de erro de tempo de execução, mas o finally cláusula ainda serão executadas e exibir a saída.

    public class ThrowTest
    {
        static void Main()
        {
            int i = 123;
            string s = "Some string";
            object o = s;

            try
            {
                // Invalid conversion; o contains a string, not an int
                i = (int)o;

                Console.WriteLine("WriteLine at the end of the try block.");
            }
            finally
            {
                // To run the program in Visual Studio, type CTRL+F5. Then 
                // click Cancel in the error dialog.
                Console.WriteLine("\nThe finally block is executed, even though"
                    + " an error was caught in the try block.");
                Console.WriteLine("i = {0}", i);
            }
        }
        // Output:
        // Unhandled Exception: System.InvalidCastException: Specified cast is not valid.
        // at ValueEquality.ThrowTest.Main() in c:\users\sahnnyj\documents\visual studio
        // 2010\Projects\ConsoleApplication9\Program.cs:line 21
        //
        // The finally block is executed, even though an error was caught in the try block.
        // i = 123
    }

O exemplo acima faz com que System.InvalidCastException ser acionada.

Embora uma exceção foi detectada, a instrução de saída é incluído na finally bloco ainda será executado, ou seja:

i = 123

Para obter mais informações sobre finally, consulte try-catch-finally.

C# também fornece a usando a instrução que fornece uma sintaxe conveniente para a mesma funcionalidade que uma instrução try-finally a exata.

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

Tarefas

Como: Lançar exceções explicitamente

Referência

C# Keywords

The try, catch, and throw Statements

Exception Handling Statements (C# Reference)

throw (C# Reference)

try-catch (C# Reference)

Conceitos

C# Programming Guide

Outros recursos

C# Reference

Histórico de alterações

Date

History

Motivo

Maio de 2010

Instruções de gravação adicional e instruções no exemplo para esclarecer os resultados.

Comentários do cliente.