fiquei meio confuso quando estudei a parte de tratamento de exceções para a certificação Java SCJP 5 no livro da Kathy,
não consegui entender muito bem as diferenças entre exeções verificadas e não verificadas,
e como diferencia-las no código, pois há questões sobre Override de métodos onde as exeções são muito importantes,
gostaria que alguém pudesse me ajudar a esclarecer esses pontos, !
Exceções no exame é uma coisa muito básica de se pegar, existe alguns pontos crucias que você pegando não tem muito misterio, vou citar alguns links aqui.
Pelo que me parece, a diferença está entre exceçoes e erros.
Uma exception é um comportamento não previsto que podemos tratar(capturar), já o erro não é possivel ser tratado.
exceções verificadas são exceções que obrigatoriamente precisam ser tratadas, como num try/catch. Em teoria, são as exceções cuja ocorrência é provável. Por exemplo, quase todas de I/O.
exceções não verificadas são aquelas que não obrigam o desenvolvedor a tratá-las, mas que mesmo assim podem ser lançadas em Runtime (não por acaso, esse tipo de exceção é filha de java.lang.RuntimeException). Conhece NullPointerException?
Para diferenciá-las no código, não há macete, só estudo. A única dica que me vem a cabeça é I/O, onde a grande maioria é checked.
overriding: um método que faz override pode ter a mesma visibilidade ou maior e nenhuma ou exceções menos amplas do que o método original, sendo que unchecked exceptions não entram nessa análise. O método que faz override pode lançar quantas unchecked exceptions quiser, independendo se o original as lança ou não. Imaginar uma pilha deitada, com o + e o - nas pontas me ajudou a firmar o conceito.
De resto, estude bem isso, porque a prova cobra bem essas partes.
[quote=Marcio_Nogueira]Pelo que me parece, a diferença está entre exceçoes e erros.
Uma exception é um comportamento não previsto que podemos tratar(capturar), já o erro não é possivel ser tratado. [/quote]
O Error pode ser tratado, mas não deve ser por uma questão de boas práticas. Errors são eventos catastróficos gerados na JVM (exceto o AssertionError), que o programa não deveria nem tentar tratar.
Eles são passíveis de tratamento porque se você der um catch num Throwable, o Error também é capturado, pois é filho daquela.
Só fiz essa ressalva semântica porque se o colega que criou o tópico for fazer a prova, é bom ele saber desse detalhe.
Obrigado bigjoe, e como voce mesmo disse a prova cobra bastante essas partes, que muitos consideram “detalhes”, mas que podem fazer você perder muitas questões se não estiver bem esclarecido quanto a “detalhes” !
Valeu !