Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Não funcionou o catch NullReferenceException

Olá, boa tarde.

Realizei o try catch conforme demonstrado na aula, porém ao tirar o comentário da linha da execução do conta.Saldo, ele deu erro mesmo assim, não entrando no catch (NullReferenceException). Não sei o que fiz de errado.

Segue o código executado:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace ByteBank { class Program { static void Main(string[] args) { //ContaCorrente conta = new ContaCorrente(7488, 4564564);

        //Console.WriteLine(ContaCorrente.TaxaDeOperacao);

        try
        {
            Metodo();
        }

        catch (NullReferenceException)
        {
            Console.WriteLine("Aconteceu um erro!");
        }

        catch (DivideByZeroException)
        {
            Console.WriteLine("Ocorreu um erro ao executar o programa. Não é possível divisão por 0!");
        }



        Console.ReadLine();
    }

    private static void Metodo ()
    {

           TestaDivisao(5);

    }

    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 numerador, int divisor)
    {
        ContaCorrente conta = null;

        Console.WriteLine(conta.Saldo);            
        return numerador / divisor;
    }
}

}

2 respostas
solução!

Bruno,

Testando seu código aqui na minha máquina estranhei o "espaço" que você deixou entre o "try" e os dois "catch", mas acho que isso não influencia. o que você precisa fazer é apertar novamente o "F5" da sua máquina e mandar o programa prosseguir, daí aparecerá o tratamento do erro.

using System;

namespace ByteBank
{
    class Programa
    {
        static void Main(string[] args)
        {
            //ContaCorrente conta = new ContaCorrente(7488, 4564564);

            try
            {
                Metodo();
            }
            catch (NullReferenceException)
            {
                Console.WriteLine("Aconteceu um erro!");
            }
            catch (DivideByZeroException)
            {
                Console.WriteLine("Ocorreu um erro ao executar o programa. Não é possível divisão por 0!");
            }

            Console.ReadLine();
        }

        private static void Metodo()
        {
            TestaDivisao(5);
        }

        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 numerador, int divisor)
        {
            ContaCorrente conta = null;

            Console.WriteLine(conta.Saldo);
            return numerador / divisor;
        }
    }
}

System.NullReferenceException: 'Object reference not set to an instance of an object.'

Você pode também DESMARCAR o "Interromper quando esse tipo de exceção é lançado"... porém eu NÃO recomendo, a não ser que você remarque novamente quando terminar estes testes. Fica em "Configurações de Exceção":

Configurações de Exceção

[]'s,

Fabio I.

Fábio, bom dia.

Realmente, o problema era essa configuração de exceção, que mesmo sendo tratada no meu try catch continuava sendo exibida. Após desmarcar a exceção rodou corretamente,

Muito obrigado.