2
respostas

Exceção sem Tratamento

Alguem me ajuda por favor, meu codigo roda igual o do professor, mas fica aparecendo aquela mesangem no ContaCorrente.cs "Exceção sem Tratamento"

CODIGO CONTACORRENTE.CS

// using 05ByteBank;

using System;

namespace ByteBankE
{
    public class ContaCorrente
    {
        public static double TaxaOperacao { get; private set; }
        public static int TotalDeContasCriadas { get; private set; }
        public Cliente Titular { get; set; }

        //readonly somente leitura
        public int Numero {get;}

        public int Agencia { get; }



        private double _saldo = 100;

        public double Saldo
        {
            get
            {
                return _saldo;
            }
            set
            {
                if (value < 0)
                {
                    return;
                }

                _saldo = value;
            }
        }


        public ContaCorrente(int agencia, int numero)
        {
            if (agencia <= 0)
            {
                throw new ArgumentException("O argumento agencia deve ser maior que 0.");
            }

            if (numero <= 0)
            {
                throw new ArgumentException("O argumento numero deve ser maior que 0.");
            }

            Agencia = agencia;
            Numero = numero;

            TaxaOperacao = 30 / TotalDeContasCriadas;

            TotalDeContasCriadas++;
        }


        public bool Sacar(double valor)
        {

            if (_saldo < valor)
            {
                return false;
            }

            _saldo -= valor;
            return true;
        }

        public void Depositar(double valor)
        {
            _saldo += valor;
        }


        public bool Transferir(double valor, ContaCorrente contaDestino)
        {
            if (_saldo < valor)
            {
                return false;
            }

            _saldo -= valor;
            contaDestino.Depositar(valor);
            return true;
        }
    }
}

CODIGO PROGRAM.CS

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

namespace ByteBankE
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                ContaCorrente contacorrente = new ContaCorrente(564, 0);
            }
            catch (ArgumentException ex)

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

            // try
            //  {

            //  }
            // catch (DivideByZeroException e)
            //  {
            //     Console.WriteLine("Não é possível divisão por zero.");
            //   }
            // catch (Exception e)
            //  {
            //   Console.WriteLine(e.Message);
            //   Console.WriteLine(e.StackTrace);
            //   Console.WriteLine("Aconteceu um erro!");
            //}

            //Metodo();

            Console.WriteLine("Execução finalizada. Tecle enter para sair");
            Console.ReadLine();
        }
        //Teste com a cadeia de chamada:
        //Metodo -> TestaDivisao -> Dividir
        private static void Metodo()
        {
            TestaDivisao(0);
        }

        private static void TestaDivisao(int divisor)
        {
            try
            {
                Dividir(10, divisor);
            }
            catch(NullReferenceException ex)
            {
                Console.WriteLine("Fui capturado pelo(NullReferenceException ex)");
                Console.WriteLine(ex.StackTrace);
            }

            //int resultado = Dividir(10, divisor);
            //Console.WriteLine("Resultado da divisão de 10 por " + divisor + " é " + resultado);


        }

        private static int Dividir(int numero, int divisor)
        {
            try
            {
                return numero / divisor;
            }
            catch(DivideByZeroException)
            {
                Console.WriteLine("Exceção com numero=" + numero + "e divisor=" + divisor);
                return -1;
                throw;//throw é controle de fluxo para lançar exceção
                Console.WriteLine("codigo depois do throw");
            }

        }
    }
}
2 respostas

Olá Antônio, como vai?

O fiz alguns teste com o código que compartilhou e me parece ser o que estamos vendo em aula.

Acredito que irá te ajudar nas aulas rodar o projeto utilizando o Ctrl + F5. Assim a exceção não irá "estourar".

Caso isso não te ajude, poderia detalhar o problema?

Abraços!

Olá Ana, tudo certo e você?

Eu consegui resolver o problema, o erro era que eu tinha colocado uma linha de codigo duas vezes e em chaves errado.

Obrigado pela ajuda de qualquer forma.