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

Duvida

To com uma duvida, na hora do metodo depositar na hora de usar o throw new ValorInvalidoException, passo o valor como paramentro, e no construtor também passou, mais o certo não aparecer uma mensagem? tipo string? eu fiz de um outro jeito, ve se esta exato e se é uma maneira correta de se usar.

fiz minha classe

public class QuantidadeInvalidaException extends Exception{

    private String texto;

    public QuantidadeInvalidaException(String texto){
        this.texto = texto;
    }
    public String toString(){
        return "Erro valor negativooo";
    }

}

Nela coloquei um atributo do tipo String, e passei como paramentro, e fiz um metodo String dentro da classe, dando a mensagem que o valor é negativo.

na classe Conta fico assim.

    public void depositar(double quantidade)throws QuantidadeInvalidaException{
        if(quantidade <0){
            throw new QuantidadeInvalidaException(toString());
        }else{
            this.saldo += quantidade;
        }
    }

Lancei uma nova exceção na frente da assinutara do metodo e, passei como parametro no throw new QuantidadeInvalidaExcpeiton o método toString criado na classe do tratamento de erro.

no main meu código fico assim

        try{
            cp.depositar(-100);
        }catch(QuantidadeInvalidaException e){
            System.out.println(e);
        }
   }

E ocorreu perfeitamento a mensagem. Essa é uma maneira certa?

2 respostas
solução!

Oi Alisson, eu acho que tem alguma coisa estranha nesse código. Não faz muito sentido, no construtor da sua exception, vc passar como argumento o retorno do método toString. Só está aparecendo a mensagem correta pq vc passou como argumento para o sysout o objeto da exception e, lá dentro do println ele chama o toString da sua classe, que retorna justamente a string que vc definiu.

No fim das contas seu atributo não está sendo usado para nada. Tenta fazer assim:

public class QuantidadeInvalidaException extends Exception{

private String texto;

public QuantidadeInvalidaException(String texto){ this.texto = texto; } 

public String toString(){ return this.texto; }

}

E na hora de lançar a exception:

public void depositar(double quantidade)throws QuantidadeInvalidaException{ 
     if(quantidade <0){ 
            throw new QuantidadeInvalidaException("Quantidade negativa");    }else{ this.saldo += quantidade; } }

Correto então mais uma vez obrigado!