Como funcionam as Exceções C# (CSharp)

Funcionamento das Exceções em C# (CSharp).


Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 04/12/2015

Exceções


Diante de situações onde nosso código possa apresentar algum erro,como no caso de conversões de dados, onde o dado recebido não é o que se espera e gere um erro de exceção, devemos dividir nosso código em etapas para identificar, tratar e garantir o perfeito funcionamento do sistema.

Entendendo o método try.

Blocos try

Contêm o código que forma uma parte da operação normal de seu programa, mas que poderia encontrar algumas condições de erro sérias.

Blocos catch

Contêm o código que trata das várias condições de erro.

Blocos finally

Contêm o código que libera qualquer recurso ou executa qualquer outra ação que você regularmente vai querer executar ao término do bloco try.
O bloco finally será executado quer a aplicação tenha lançado uma exceção ou não e pode ser omitido.

Sintaxe

try
{
      // Código para execução normal
}
catch
{
      // Código para manipulação do erro
}
finally
{
      // Liberação
}

Exemplo

Recebemos uma variável string informada pelo usuário e precisamos converter para um Int32 garantindo que se for encontrado erro esta retorne o valor zero.

public Int32 ConverteInt32(string Valor)
{
    Int32 valor;

    try
    {
        valor = Convert.ToInt32(Valor);
    }
    catch
    {
        valor = 0;
    }
    return valor;
}

Podemos também capturar a mensagem de erro assim como varias informações sobre nosso erro definindo uma variável local no momento do erro.

catch(Exception e)
{
      meuErro =  e.Message;
}

Podemos tratar erros específicos com tipos de catch diferentes para cada tipo de erro, e estes catch podem ser aninhados em uma estrutura para melhor depuração do erro.

try
{
    string s = null;
    ProcessString(s);
}
// Mais especificos:
catch (ArgumentNullException e)
{
    Console.WriteLine("{0} Primeira exceção.", e);
}
// Menos especifico:
catch (Exception e)
{
    Console.WriteLine("{0} Segunda exceção.", e);
}


Comentários