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)
{
}
}
}