2
respostas

Por qual motivo eu tenho que passar as exceções, no program e dentro da classe, referentes ao mesmo erro?

Por exemplo, no construtor da classe ContaCorrente tem:

 public ContaCorrente(int agencia, int numero)
        {
            if (agencia <= 0 || numero <= 0)
            {
                throw new ArgumentException("A Agencia e o Número devem ser maiores que 0.");
                //Console.WriteLine("Exceção");
            }
    }

E no Program tem:

 try
            {
                ContaCorrente conta = new ContaCorrente(0, 0);
            }
            catch (ArgumentException e)
            {
                Console.WriteLine("Ocorreu uma exceção do tipo ArgumentException.");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.ReadLine();
2 respostas

Olá Ângela, bom dia!

O construtor da sua classe ContaCorrente lançará (throw) uma ArgumentException, nos casos em que (agencia <= 0 || numero <= 0), que será pega (catch) pela primeira clausula catch na sua pilha de chamadas (call stack). No seu caso, primeiro catch da ArgumentException se encontra na classe Program.

Na sua classe a exceção é levantada e no programa o erro da exceção é impresso no console.

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