a classe SomeException não herda de Exception por isso não pode ser lançada com exceção!
M
Murl
Bem, eu pensei que o override nesse caso nao daria certo porque o metodo orignal não lança exceção alguma. Alguma regra de override diz que não se pode lançar exceções nao declaradas no metodo original, ou exceções que sejam mais amplas…
Num é isso?
É olhei agora e vi que SomeException nao ‘extends Exception’ então não pode ser lançada como exceção… Mas caso ela fosse uma Exception ocorreria erro do mesmo jeito certo?
Lavieri
SomeException precisa extender Throwable, para poder ser lançado de um método
Murl:
Bem, eu pensei que o override nesse caso nao daria certo porque o metodo orignal não lança exceção alguma. Alguma regra de override diz que não se pode lançar exceções nao declaradas no metodo original, ou exceções que sejam mais amplas…
Num é isso?
não se pode… mas o fato é q vc so pode lançar objetos Throwable… não se pode lançar o que quiser… não é possivle lançar uma “Jaca!” de um método, apenas Throwables, Erros, Exceções e Runtime Exceptions são possiveis…
…
alem disso parte do q vc falou esta correto… o que não pode é lançar Checkd Exception não declaradas… ou seja… não se pode lançar nada que descenda de Exception e não de RuntimeException, e que não esteja declarado no método q vai ser sobrescrito… nem o que se descenda de Throwable e não descenda de Error ou RuntimeException
Lavieri
se extendesse Exception, daria o mesmo erro…
se extender RuntimeException, ou um de seus descendetes … não da erro e compila normal…
se extender Erro, ou um de seus descendetes tb não da erro
se extender Throwable diretamente tb da erro
Editado, pra corrigir throwable…
R
rdfmartins
Bem observado, Murl. A sua colocação também procede.
vc não precisa capturar, um Error, pela razão obvia de que quando acontece um error, não tem o que se fazer, normalmente é uma situação sem volto… então vc so captura o Erro se quiser
se vc lançar um RuntimeException tb… pq exceções em tempo de execução são imprivesiveis… e não precisam ser verificadas… podem acontecer por razões adversas, e portanto não precisam ser obrigatoriamente tratadas, ou declaradas… por exemplo, vc não precisa verificar a todo momento que uma variavel é nula, porem isso pode ocorrer a todo instante…