/** Se pidió retirar más de lo que hay en la cuenta. */
public class InsufficientFundsException extends Exception {
    // Throwable es Serializable; -Xlint:all pide declarar la versión.
    private static final long serialVersionUID = 1L;

    private final long balance;
    private final long requested;

    public InsufficientFundsException(long balance, long requested) {
        super("saldo insuficiente: hay " + balance + ", se pidió " + requested);
        this.balance = balance;
        this.requested = requested;
    }

    public long balance() {
        return balance;
    }

    public long requested() {
        return requested;
    }
}
