2
respostas

[Dúvida] catch não funciona para referência nula

Olá,

    ao tentar tratar a exceção NullReferenceException com o catch na atividade 3 da aula 2, dá aquela mensagem padrão do Visual Studio de quando ocorre uma exceção não esperada no código, ou seja, não está reconhecendo o catch do NullReferenceException, mesmo com o meu código estando idêntico ao passado na aula, exceto que com o "Console.WriteLine(conta.Saldo);" não comentado, para que aconteça o erro da referência nula.

    Me chamou a atenção que este último Console.WriteLine estava comentado, e imagino que seja porque não dá para "parar" este problema com o catch, mas queriam manter o ponto da aula. Queria saber se é isso mesmo, ou se deve ser mesmo outra coisa no meu código.
2 respostas

Olá tudo bem? Posta seu código por favor ou link no github

Bom dia, é este aqui:

namespace Bytebank { public class Programa { static void Main(string[] args) {

        try
        {
            Metodo();
        }
        catch (NullReferenceException excecao)
        {
            Console.WriteLine(excecao.Message);
            Console.WriteLine("erro!");
        }
        catch (DivideByZeroException excecao)
        {
            Console.WriteLine("Ocorreu um erro! Não é possível dividir um número por 0");
        }

        Console.ReadLine();     
    }

    private static void Metodo()
    {
        TestaDivisao(0);
    }
    private static void TestaDivisao(int divisor)
    {
        int resultado = Dividir(10, divisor);
        Console.WriteLine("Resultado da divisão de 10 por" + divisor + " é " + resultado);
    }

    private static int Dividir(int numero, int divisor)
    {
        ContaCorrente conta = null;
        Console.WriteLine(conta.Saldo);

        try
        {
            return numero / divisor;
        }
        catch
        {
            Console.WriteLine("Exceção com numero = " + numero + " e divisor " + divisor);
            throw;
        }
    }
}

}