C# tente pegar finalmente

Resumo : neste tutorial, você aprenderá como usar a try...catch...finallyinstrução C# para lidar com exceções e limpar recursos.

Introdução à instrução C# try…catch…finalmente

A try...catchdeclaração tem uma finallycláusula opcional como segue:

try
{
    // execute statement
}
catch (Exception e)
{
    // handle execeptions
}
finally
{
    // always execute
}Linguagem de código:  PHP  ( php )

Quando uma try...catchinstrução contém um finally, ela sempre executa o finallybloco, independentemente de ocorrer uma exceção dentro do trybloco ou não:

  • Se nenhuma exceção ocorrer dentro do trybloco, o controle pula qualquer catchbloco e vai para o finallybloco.
  • Se ocorrer uma exceção dentro do trybloco, as catchcláusulas apropriadas serão executadas seguidas pela execução do finallybloco.

É importante observar que mesmo que a trycláusula possua uma returninstrução, o finallybloco sempre será executado.

Além disso, o finallybloco não pode conter uma returninstrução. Caso contrário, o programa não será compilado.

Na prática, você costuma usar o finallybloco para limpar os recursos, como fechar um fluxo ou uma conexão de banco de dados.

Exemplo de instrução C# try…catch…finally

Vejamos alguns exemplos de uso da try...catch..finallydeclaração.

1) Usando o exemplo de instrução C# try…catch…finally

O programa a seguir lê um arquivo de texto linha por linha e exibe o conteúdo do arquivo no console. Ele usa a try...catch...finallyinstrução para lidar com exceções:

StreamReader? reader = null;
try
{
    reader = new StreamReader(@"C:\csharptutorial\test.txt");
    string? line = reader.ReadLine();
    while (line != null)
    {
        Console.WriteLine(line);
        line = reader.ReadLine();
    }
}
catch (Exception e)
{
    Console.WriteLine($"Error: {e.Message}");
}
finally
{
    //close the file
    if (reader != null) reader.Close();
}Linguagem de código:  PHP  ( php )

Neste exemplo, o finallybloco fecha o leitor de fluxo, independentemente de ocorrer uma exceção dentro do trybloco ou não.

2) Usando a instrução C# try…catch…finally com a instrução return

O seguinte ilustra o fluxo de controle do programa ao usar uma returninstrução dentro do trybloco:



int Test()
{
    int result = 100;
    try
    {
        return result;
    }
    catch (Exception e) 
    {
        Console.WriteLine(e.Message);
    } 
    finally
    {
        result = 200;
        Console.WriteLine("Execute the finally block...");
    }

    // these statement won't execute
    Console.WriteLine("Bye!");
    return result;
}

Console.WriteLine(Test());Linguagem de código:  PHP  ( php )

Saída:

Execute the finally block...
100Linguagem de código:  JavaScript  ( javascript )

Neste exemplo, o programa retorna a resultvariável do trybloco. O programa também executa o finallybloco. No entanto, termina imediatamente, desde que chegue ao final do finallybloco.

Resumo

  • Use o C# try...catch...finallybloco para lidar com exceções e limpar os recursos.
  • O finallybloco sempre é executado independentemente de ocorrer uma exceção no trybloco ou não.

Deixe um comentário

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