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
The try, catch, and throw Statements
Exception Handling Statements (C# Reference)
Conceitos
Outros recursos
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. |