Tratamento de Exceções na SCJP

Boa noite pessoal,

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, ! :stuck_out_tongue:

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.



http://www.infoblogs.com.br/view.action?contentId=12220&Excecoes-no-Java.html





http://java.sun.com/javase/6/docs/api/java/lang/Exception.html
http://java.sun.com/javase/6/docs/api/java/lang/RuntimeException.html

isso já basta, leia todos e nunca mais teŕa duvidas sobre exceções na vida.

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. :wink:

Alessandro,

respondendo de forma sintética às suas dúvidas:

  • 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? :slight_smile:

  • 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.

Boa sorte!

[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. :wink:[/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.

Grande abraço!

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 !