Eu fiz os mesmos passos mas meu erro está acontecendo no VS e não no console.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ByteBank
{
class SaldoInsuficienteException : Exception
{
public SaldoInsuficienteException()
{
}
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(string mensagem) : base(mensagem)
{
}
}
}
E a ContaCorrente
using System;
namespace ByteBank
{
public class ContaCorrente
{
public Cliente Titular { get; set; }
public static int TotalDeContasCriadas { get; private set; }
public int Agencia { get; }
public int Numero { get; }
private double _saldo = 100;
public double Saldo
{
get
{
return _saldo;
}
set
{
if (value < 0)
{
return;
}
_saldo = value;
}
}
public int TaxaOperacao { get; }
public ContaCorrente(int agencia, int numero)
{
if(agencia <= 0)
{
throw new ArgumentException("O argumento agencia deve ser maior que zero", nameof(agencia));
}
if (numero <= 0)
{
throw new ArgumentException("O argumento numero deve ser maior que zero",nameof(numero));
}
Agencia = agencia;
Numero = numero;
TotalDeContasCriadas++;
TaxaOperacao = 30 / TotalDeContasCriadas;
}
public void Sacar(double valor)
{
if (_saldo < 0)
{
throw new ArgumentException("Valor do saque não pode ser negativo", nameof(valor));
}
if (_saldo < valor)
{
throw new SaldoInsuficienteException(Saldo, valor);// Erro acontece aqui "ByteBank.SaldoInsuficienteException: 'Tentativa de saque de 1000 com saldo de 600'
"
}
_saldo -= valor;
}
public void Depositar(double valor)
{
_saldo += valor;
}
public void Transferir(double valor, ContaCorrente contaDestino)
{
if (_saldo < 0)
{
throw new ArgumentException("Valor inválido para a transferência", nameof(valor));
}
Sacar(valor);
contaDestino.Depositar(valor);
}
}
}