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

Controle de Exceções: Criando Exception

Olá, estou com dificuldade na criação do Exception, de acordo com a proposta do exercício segue meus códigos:

Classe RuntimeException:

public class RuntimeException {

    private String valor;

    public RuntimeException(String valor) {
        // TODO Auto-generated constructor stub
    }

}

Sub Classe da Exception:

public class ValorInvalidoException extends RuntimeException {

    public ValorInvalidoException(double valor) {
        super("Valor Invalido: " + valor);
        // TODO Auto-generated constructor stub
    }

}

Super Classe:

abstract class Conta {

    protected double saldo;

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

Classe de teste:

public class TestaDeposita {

    public static void main(String[] args) {
        Conta cp = new ContaCorrente();

        try {
            cp.deposita(-100);
        } catch (ValorInvalidoException e) {
            System.out.println(e.getMessage());
        }

    }

}

Erros no Eclipse:

Multiple markers at this line
    - No exception of type ValorInvalidoException can be thrown; an exception type must be a subclass of 
     Throwable
    - The constructor ValorInvalidoException(String) is undefined
    - No exception of type ValorInvalidoException can be thrown; an exception type must be a subclass of 
     Throwable

Alguem poderia me ajudar a corrigir este problema?

6 respostas
solução!

O 1 e 3 erro diz que exception do tipo ValorInvalidoException precisa ser thrown.

então:

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

voce esquece do throws ValorInvalidoException e também nao colocou { depois do else.

o 2 erro você não precisa criar essa classe aqui

Classe RuntimeException:

public class RuntimeException {

    private String valor;

    public RuntimeException(String valor) {
        // TODO Auto-generated constructor stub
    }

}

Boa tarde Vania, Obrigado pelo seu feedback, uma outra duvida, o exercício orienta a criação desta classe "RuntimeException"

Oi José, onde ele fala pra criar a classe "RuntimeException"?

Sim, temos a seguinte orientação no Exercicio 10 Aula 6 Java II:

Crie sua própria Exception, ValorInvalidoException. Para isso, você precisa criar uma classe com esse nome que seja filha de RuntimeException.

O exercício fala pra criar a classe ValorInvalidoException e diz que ela precisa ser filha (extends) a RuntimeException. So isso. A classe RuntimeException é a própria do Java. Não precisamos sobreescreva-la

Logo não é necessário criar a classe RuntimeExeption da seguinte maneira:

public class RuntimeException {

}