3
respostas

correção atividade "Miguel pede socorro! Parte 2"

A atividade "Miguel pede socorro! Parte 2" possui um erro, na definição da classe "EstoqueInsuficienteException" foi criado apenas um construtor que recebe como argumento uma String, mas em "RealizaCompra" foi lançado a exeption chamando um construtor sem argumento.

recomendo que arrumem isto na questão.

3 respostas

Olá Murilo,

acredito que não seja esse o problema.

No enunciado do exercício, a classe criada extende a classe Exception e para essas exceções existe a necessidade de utilizar a declaração da exceção na interface do método com a instrução:

throws EstoqueInsuficienteException

Não há necessidade de ter argumento, já que essa classe (Exception) tem construtor sem parâmetros que serão herdados por ela.

Caso este post tenha te ajudado, por favor, marcar como solucionado. Bons estudos! =)

Olá Luciano,

Na herança os métodos construtores não são herdados.

Fiz um teste criando uma exceção que estende de Exception e criei apenas um construtor que recebe como argumento uma String, e depois tentei lançar ele com um construtor sem argumento e deu erro de compilação, justamente pelo motivo que eu disse acima.

Olá Murilo, você tem razão!

agora sim testei o código e pude entender melhor o problema. :D

/*
 * file: MiguelPedeSocorro.java
 * 
 * Miguel estava realmente animado com a aula e
 * resolveu melhorar sua classe de exceção
 * EstoqueInsuficienteException, forçando o
 * compilador a verificar se a exceção estaria
 * sendo tratada. Para isso mudou a herança da
 * classe conforme o código abaixo:
*/

class EstoqueInsuficienteException extends Exception {

    // Construtor não herdado
    // public EstoqueInsuficienteException(){}

    public EstoqueInsuficienteException(String msg)
    {
        super(msg);
    }
}

/*
 * Contudo, o código do método RealizaCompra 
 * passou a dar erro. Analise como está:
 */

class Produto {}

class Estoque {

    int totalDeProdutosNoEstoque;

    public void RealizaCompra(Produto produto) throws EstoqueInsuficienteException {
        //outras instruções aqui...
        if (totalDeProdutosNoEstoque < 0) {
            throw new EstoqueInsuficienteException();
        }
    }

}

/*
 * O que Miguel precisa fazer para que seu 
 * método volte a compilar?
 */

No código acima, quando comento o construtor, a IDE reclama o erro que você falou, desculpe.

Sugiro que se ainda não fez, utilize também o recurso de sugerir alteração na própria página do exercício.