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

Dúvida na afirmação 2

A afirmação 2 não estaria errada já que não é a classe Throwable que precisa ser estendida diretamente? A afirmação me levou a pensar que no código teria algo como:

public class MinhaExcecao extends Throwable {}
2 respostas
solução!

Olá Gilberto! Tudo bem?

Na afirmação 2, temos:

Throwable é a classe que precisa ser estendida para que seja possível jogar um objeto na pilha (através da palavra reservada throw)

E sim, é verdade... para que possamos utilizar o recurso throw é necessário que a classe herde da Throwable.

Esse é o caso das Exceptions do Java... todas elas herdam indiretamente da classe Throwable, e por isso conseguimos utilizar dessa forma:

throw new IllegalArgumentException()

Só conseguimos utilizar dessa forma pois a classe IllegalArgumentException herda da classe Exception que por sua vez, herda da classe Throwable:

public class Exception extends Throwable

Então para que a sua exceção possa ser "lançada" como essas demais, ela também deve herdar da classe Throwable, nem que seja indiretamente, através da classe Exception. Dessa forma podemos criar nossas próprias exceções e utilizar assim:

throw new MinhaExcecao()

Consegui te ajudar nessa dúvida?

Os conceitos de exceções e herança podem parecer confusos no primeiro contato, não se preocupe! O que mais nos ajuda nesse caso é praticar... ver diversas vezes como as exceções são utilizadas é a melhor forma de entender esses detalhes.

Vou deixar como recomendação adicional a apostila da Caelum sobre Java e orientação a objetos. Nela você terá um capítulo dobre a exceções, e com certeza pode ser útil durante os estudos.

Se eu puder te ajudar em algo mais, é só falar! 😄

Muito obrigado pela resposta, Guilherme. Me ajudou sim