3
respostas

Dúvida exercício 6

No exercício 6 fiz dessa forma:

public void deposita(double valor) {
        if(valor <= 0) {
            throw new ValorInvalidoException(valor);
        }
        this.saldo += valor;
    }

Mas ele não compilava na classe Conta, nem na TestaDeposita. Porque?

public class TestaDeposita {
    public static void main(String[] args) {
        Conta poupanca = new ContaPoupanca(); 
        poupanca.deposita(-100.0);

        //System.err.println("Valor depositado: " poupanca.getSaldo());
    }
}
3 respostas

Oi Eduardo,

Você pode postar o erro que o compilador aponta?

Como você não está tratando a ValorInvalidoException, ela deveria herdar a classe RuntimeException. Você implementou dessa forma?

Minha classe ValorinvalidoException

@SuppressWarnings("serial")
public class ValorInvalidoException extends RuntimeException {
    public ValorInvalidoException(String message){
        super(message);
    }
}

e a minha classe TestaDeposita

@SuppressWarnings("serial")
public class ValorInvalidoException extends RuntimeException {
    public ValorInvalidoException(String message){
        super(message);
    }
}

Essas classes compilam normal, apenas quando rodo a TestaDeposita, no console aparece a mensagem de exception abaixo:

Exception in thread "main" ValorInvalidoException: Valor inválido.
    at Conta.deposita(Conta.java:10)
    at ContaCorrente.deposita(ContaCorrente.java:1)
    at TestaDeposita.main(TestaDeposita.java:5)

Tudo está funcionando corretamente. Isso não é um erro de compilação. O programa está soltando uma exception pois você está tentando depositar um valor negativo e não está tratando sua ValorInvalidoException. Caso você não deseje que o programa pare, você pode tratar a exception com try/catch.