1
resposta

Utilizando o try e catch para valor nulo

quando eu digito esse programa, ele não executa, fica parado na mensagem da exceção do valor nulo e o try e o catch não funcionam, alguém consegue por favor me explicar?

class Program { static void Main(string[] args) { Metodo();

    Console.ReadLine();
}

static void Metodo()
{
    TestaDivisao(2);
}

static void TestaDivisao(int divisor)
{
    int resultado = Dividir(10, divisor);
    Console.WriteLine("O número 10 dividido por " + divisor + " é igual a: " + resultado);
}

public static int Dividir(int numero, int divisor)
{

    try
    {

        ContaCorrente conta = null;
        Console.WriteLine(conta.Saldo);
        return numero / divisor;

    }
    catch (NullReferenceException)
    {
        Console.WriteLine("valor nulo")
    }
}

}

1 resposta

Aluno,

Algumas observações... não sei se vai explicar tudo...

1 - Nesta linha falta o ponto-e-vírgula:

Console.WriteLine("valor nulo");

2 - Na função "Dividir" é obrigatório que todos os caminhos retornem (RETURN) um valor;

static int Dividir(int numero, int divisor)
{
    try
    {

        ContaCorrente conta = null;
        Console.WriteLine(conta.Saldo);
        return numero / divisor;

    }
    catch (NullReferenceException)
    {
        Console.WriteLine("valor nulo");
    }

    return 0;   
}

3 - Esta exceção está sendo lançada em tempo de execução.

Você pode pedir para o Visual Studio IGNORAR a INTERRUPÇÃO da exceção em "Configurações de Exceção":

Configurações de Exceção

Basta desmarcar o "check" de: "Interromper quando esse tipo de exceção é lançado"...

... e assim o Visual Studio NÃO vai te avisar sobre o problema e mostrará na tela de console a mensagem dentro do "catch" de "NullReferenceException". Em outras palavras, NENHUMA exceção TRATADA será notificada....

... mas ... se você quiser voltar a configuração antiga, pode forçar o erro SEM tratamento (comentando o "Try-Catch") e marcar novamente:

Configurações de Exceção 2

Você também pode ir nas "Configurações de Exceção" e configurar para que o Visual Studio aponte o erro novamente... eps... onde diabos fica isso? Tem opções demais aqui! KKKKK!!!

Espero ter ajudado.

[]'s,

Fabio I.