Tenho dois problemas:
- Mesmo passando um valor para saque válido (ou seja, um valor menor que o meu saldo) a exception é chamada (?);
public class TestaConta {
public static void main(String[] args) {
Conta joao = new ContaCorrente();
joao.deposita(50);
try {
joao.saca(30.0);
} catch(SaldoInsuficienteException e) {
System.out.println(e.getMessage());
}
catch(Exception e) {
System.out.println("um outro erro");
}
System.out.println(joao.getSaldo());
}
}
public class SaldoInsuficienteException extends RuntimeException {
private final double saldoAtual;
private static final long serialVersionUID = 1L;
public SaldoInsuficienteException(double saldoAtual) {
super("Saldo insuficiente * " + saldoAtual);
this.saldoAtual = saldoAtual;
}
public double getSaldoAtual() {
return saldoAtual;
}
}
2 - Não consigo inserir a exception RuntimeException() no metodo saca da classe conta. Não compila.
public abstract class Conta {
protected String nome;
protected double saldo;
public void setNome(String nome) {
this.nome = nome;
}
public void deposita(double valor) {
this.saldo += valor;
}
public void saca(double valor) {
if(saldo >= valor) {
this.saldo -= valor;
}
throw new SaldoInsuficienteException(saldo);
throw new RuntimeException(); // << erro aqui
}
public abstract void atualiza(double taxa);
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public double getSaldo() {
return this.saldo;
}
}