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

Teste com erros

Em um método da classe CONTA, eu implementei o código abaixo

    public void deposita(double valor) {
        if (valor < 0.0) { 
            throw new IllegalAccessError("O valor não pode ser negativo.");
        } 
        else {
            this.saldo += valor;
        }
    }

Porém, quando executo o seguinte código na MAIN, a exceção não é capturada:

        try {
            ContaCorrente j = new ContaCorrente();
            j.deposita(-100.0);
            j.saca(1000.0);
            System.out.println(j.getSaldo());
        }
        catch (SaldoInsuficienteException e) {
            System.out.println("O saldo esta insuficiente: " + e.getSaldoAtual());
        }
        catch (Exception e) {
            System.out.println("Um outro erro qualquer!");
        }

Porque, se estou tratando exceções genéricas também?

7 respostas

Oi Alessandro, tudo bem ?

O que você estorou : throw new IllegalAccessError("O valor não pode ser negativo.");

Não é herda de Exception, por isso não funcionou.

Usa IllegalArgumentException no lugar

Obrigado Matheus, mas essa não é a classe mais genérica possível no que tange a exceção (mãe de todas)? Colocar "IllegalArgumentException " sei que funciona, mas qual a exceção que coloco pra capturar qualquer tipo de exceção inclusive essa? Existe alguma assim (acredito que sim pois isso é um padrão de sistema, não)?

Sim, a classe Exception é a classe mais generica das Exceptions, contudo ela herda de Throwable.

O que você gerou no seu código era um filho direto de Throwable e não de excetion.

Desculpe a demora em responder, mas ainda não entendi.

solução!

Alessandro, o que o Matheus tentou te dizer é que IllegalAccessError não é filha de Exception, por isso que o bloco catch nunca é executado!

Isso ficará mais claro ainda se vc der uma olhada na documentação da classe IllegalAccessError onde vc poderá ver que ela não herda de Exception.

Qualquer coisa é só falar!

Grande abraço e bons estudos!

Obrigado.

Por nada, Alessandro!

Grande abraço e bons estudos!