Acredito que o código da classe SaldoInsuficienteException está escrito errado. Não deveria ser assim:
public class SaldoInsuficienteException extends RuntimeException{
    private final double saldoAtual;
    public SaldoInsuficienteException(double saldoAtual) {
        super("Saldo insuficiente " + saldoAtual);
        this.saldoAtual = saldoAtual;
    }
    public double getSaldoAtual() {
        return saldoAtual;
    }
}Outra coisa: não entendi essa parte do código super("Saldo insuficiente " + saldoAtual);
É uma chamada a um método da classe pai, no caso, RuntimeException?
 
            