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

Mão na massa- Aula 5

Não sei ao certo o porquê, mas no exercício da aula 5 eles está me dando o erro da exception no VS, e não no console, cancelando a compilação. O erro está certo (SaldoInsuficienteException), como esperado, e mostrando toda a rota, mas o erro aparece no VS, e não no console.

Classe ContaCorrente

// using _05_ByteBank;

using System;

namespace ByteBank
{
    public class ContaCorrente
    {
        public Cliente Titular { get; set; }

        public static int TotalDeContasCriadas { get; private set; }
        public static double TaxaOperacao { get; private set; }
        public int Agencia { get; }
        public int Numero { get; }
        public int ContadorSaquesNaoPermitidos { get; private set; }
        public int ContadorTransferenciasNaoPermitidas { get; private set; }

        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 '{nameof(agencia)}' deve ser maior que 0.");
            }

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

            Agencia = agencia;
            Numero = numero;

            TotalDeContasCriadas++;
            TaxaOperacao = 30 / TotalDeContasCriadas;
        }


        public void Sacar(double valor)
        {
            if (valor < 0)
            {
                throw new ArgumentNullException("Valor de saque não pode ser negativo.", nameof(valor));
            }

            if(_saldo < valor)
            {
                ContadorSaquesNaoPermitidos++;
                throw new SaldoInsuficienteException(Saldo, valor);
            }
            _saldo -= valor;
        }



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


        public void Transferir(double valor, ContaCorrente contaDestino)
        {
            try
            {
                Sacar(valor);
                contaDestino.Depositar(valor);
            }
            catch (SaldoInsuficienteException)
            {
                ContadorTransferenciasNaoPermitidas++;
                throw;
            }
        }
    }
}

SaldoInsuficienteException

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

namespace ByteBank
{
    class SaldoInsuficienteException : Exception
    {
        public double Saldo { get; }
        public double ValorSaque { get; }

        public SaldoInsuficienteException(double saldo, double valorSaque)
            :this ("Tentativa de saque de " + valorSaque + " com saldo de " + saldo)
        {
            Saldo = saldo;
            ValorSaque = valorSaque;
        }

        public SaldoInsuficienteException()
        {

        }

        public SaldoInsuficienteException(string mensagem)
            : base(mensagem)
        {

        }
    }
}
1 resposta
solução!

descobri.. a classe SaldoInsuficienteException estava herdando da classe errada, e não estava como public.