Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não consegui acessar as informações da Inner Exception.

Aparece o erro NullReferenceException quando tento acessar a inner exception de OperacaoFinanceiraException.

  1. Essa é a Main, onde chamei a exceção no catch:

    static void Main(string[] args)
         {
    
             try
             {
                 ContaCorrente conta1 = new ContaCorrente(4564, 789684);
                 ContaCorrente conta2 = new ContaCorrente(1338, 864563);
    
                 conta1.Transferir(10000, conta2);
             }
             catch (OperacaoFinanceiraException ex)
             {
                 Console.WriteLine(ex.Message);
                 Console.WriteLine(ex.StackTrace);
    
                 Console.WriteLine("Informações da INNER EXCEPTION (exceção interna):");
                 Console.WriteLine(ex.InnerException.Message);
                 Console.WriteLine(ex.InnerException.StackTrace);
             }
             Console.ReadLine();
         }

    A linha exata que dá erro é a que eu chamo a mensagem da inner exception.

  2. Esse é o método da classe ContaCorrente, que lança a exceção: `public void Transferir(double valor, ContaCorrente contaDestino)

     {
         if (valor < 0)
         {
             throw new ArgumentException("Valor inválido para a transferência.", nameof(valor));
         }
    
         try
         {
             Sacar(valor);
         }
         catch (SaldoInsuficienteException e)
         {
             ContadorTransferenciasNaoPermitidas++;
             throw new OperacaoFinanceiraException("Operação não realizada.", e);
         }
    
         contaDestino.Depositar(valor);
     }

` O problema é que só dá erro quando uso a OperacaoFinanceiraException como a exceção externa, quando uso apenas Exception o código roda como esperado.

1 resposta
solução!

Ei Maria joia ? Na classe OperacaoFinanceiraException vc criou o construtor que recebe a inner exception.

public OperacaoFinanceiraException(string mensagem, Exception excecaoInterna) 
        : base( mensagem, excecaoInterna)
{

}

Mas o ideal é compartilhar seu projeto, se tiver usando git compartilha o link aqui, que fica mais facil ajudar

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software