Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Tentei criar minha própria Exception e não imprimiu a mensagem do super().

Segue a classe DepositaSaldoNegativoException (minha própria exception).

public class DepositaSaldoNegativoException extends RuntimeException {

    public DepositaSaldoNegativoException() {
        super("Você tentou depositar um saldo inválido!");

    }

}

Segue o bloco de teste

try {
            corrente.deposita(-20);
        } catch (DepositaSaldoNegativoException e) {
//            System.out.println("Você tentou depositar um valor inválido!");
            System.out.println(e.getMessage());
        } catch (Exception e) {
            System.out.println("um outro erro qualquer!");
        }

Nunca é imprimido a mensagem Você tentou depositar um saldo inválido! que está vindo do super. O que estou fazendo de errado?

Agradeço desde já.

3 respostas
solução!

Olá, no método deposita você está fazendo a verificação para lançar a exceção? por exemplo:

public void deposita(int valor) throws DepositaSaldoNegativoException {
    if(valor < 0)
        throw new DepositaSaldoNegativoException();
}

Acredito que isso pode te ajudar! :D

Olá,

Eu testei seu código e funcionou normalmente, como você mostrou o código da Exceção e do Main de teste, a única coisa que não vimos foi seu método deposita.

Eu implementei aqui ele e testei, e mostrou a mensagem certinho, então seu erro é algo faltando no deposita com toda a certeza, só ajustar conforme o Alexandre já mostrou.

Abraços.

Valeu Alexandre e Emerson. Foi falta de atenção de minha parte. Estava lançando o IllegalArgumentException ao invés da minha própria exceção.

    public void deposita(double valor) {
        if (valor > 0) {
            this.saldo += valor;

        }else{
            throw new IllegalArgumentException(); //FALTA DE ATENÇÃO MINHA KKK
        }
    }