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 {}
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 {}
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 reservadathrow
)
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