2
respostas

Porque as classes RuntimeException e Exception nao sao abstratas?

Uma vez que as classes "RuntimeException" e "Exception" nao possuem nenhuma implementação de código (métodos proprios) alem dos construtores, porque as mesmas nao sao abstratas?

Ha algum motivo conhecido para isso ou simplesmente foi definido assim pelos desenvolvedores da linguagem?

EDIT: Acabei vendo que é usual "lançarmos" exceções através das classes "RuntimeException" e "Exception" diretamente.

Ex.:

throw new Exception("Minha Excecao");

Entendo então o porque das classes "RuntimeException" e "Exception" nao serem abstratas, uma vez que para fazer isso precisamos instanciar as mesmas.

Ficou a duvida, quando devemos lançar as excecoes pelas classes "RuntimeException" e "Exception" (nao entrando em mérito de checked e unchecked) e quando devemos criar classes especificas para isso (como mostrado no exercício).

Qual seria a "boa pratica" ou mesmo a "ideia comum" adotada pela comunidade Java para isso?

2 respostas

Olá Anderson!

Acredito que você deve utilizar as exceções que já existem para os erros mais comuns e criar suas próprias exceções para os problemas mais específicos que envolvem regras de negócio do sistema.

Boa tarde Guilherme,

Bem, então eu "nunca" deveria lançar uma exceção através das classes "RuntimeException" e "Exception" em si, já que as mesmas nao sao referentes a nenhum erro especifico?

Se é isso, ai fiquei sem entender de o porque essas classes serem concretas ("RuntimeException" e "Exception" ), uma vez que eu so deveria usar "classes filhas" das mesmas para lançar erros (sejam essas "classes filhas" já existentes ou mesmo criadas por mim).