Faça uso das Exceptions com cuidado

Dica enviada pelo George Gastaldi

Do mesmo modo que é mais difícil para as pessoas lerem trechos de código
que têm blocos try-catch, é mais difícil para um compilador analisar tal
código. Em termos de legibilidade entretanto, blocos try-catch podem ser
na verdade benéficos, pois eles descrevem os tipos de
problemas/situações que o software espera gerenciar e como gerenciá-los.

Durante a execução, a presença de um bloco try-catch não afeta o
desempenho significantemente - exceto quando uma exceção ocorre. Em tais
situações entretanto, você deve lidar com a exceção de qualquer maneira,
então o custo de desempenho é tolerável.

Somente quando dada situação for realmente excepcional (daí o nome
exceção) você deve usar este mecanismo, ainda que esteja tentado a
lançar exceções para simplesmente fazer uso dos seus aspectos de
controle de fluxo.

Um bom uso do mecanismo de exceções seria lançar uma exceção com o nome
de um arquivo necessário, mas que não foi encontrado. Neste caso, o
custo de performance imposto pelas exceções somente seria "debitado"
quando o aplicativo em questão for incapaz de proceder normalmente.

Um mau exemplo do uso de exceções seria lançar uma exceção com o nome de
um arquivo que FOI encontrado, neste caso o custo seria provavelmente
"debitado" de sua CPU muitas mais vezes.

Observação

Exceções em Java são somente uma pequena parte do mundo do gerenciamento
de exceções, mas todos os casos ditos "excepcionais" podem ser
categorizados em: erros (errors), exceções em tempo de execução (runtime
exceptions), e exceções que não ocorrem durante a execução (non-runtime
exceptions). Um ponto em comum é que todas herdam da classe
java.lang.Throwable. Eis uma breve descrição de cada categoria:

Errors: as classes que herdam de java.lang.Error. Essas classes não
precisam ser manipuladas em um bloco try-catch. Nisto incluem-se
OutOfMemoryError e StackOverflowError, que relatam problemas com a
máquina virtual. Normalmente "Errors" não são recuperáveis.

Runtime Exceptions: classes que herdam de java.lang.RuntimeException não
precisam ser necessariamente manipuladas num bloco try-catch. Nisto
incluem-se ArithmeticException e NullPointerException. Runtime
Exceptions em programas tendem a ser erros do programador que não foram
descobertos e tratados durante a fase de teste. A melhor coisa a fazer é
corrigir o problema que causou a exceção.

Non-runtime Exceptions: são as classes que herdam de java.lang.Exception
porém não de java.lang.RuntimeException ou suas herdeiras. Tais classes
devem estar obrigatoriamente dentro de um bloco try-catch. Se não
estiverem, o compilador irá reclamar. As exceções podem ser repassadas
para a rotina chamadora, através do uso da keyword "throws".

Bons códigos!!!

______________________________________________________________________________
Handerson Ferreira Gomes
Summa Technologies
Boletim Dicas Java - Sua dose diária de Java.



================================================================================
[dicas-list] circula diariamente com pequenas dicas sobre a plataforma Java e é
mais um serviço da Sociedade de Usuários Java - http://www.soujava.org.br
      *** SouJava - Fortalecendo a Comunidade Java Brasileira! ***
- Para contribuir com uma dica, envie um e-mail para [EMAIL PROTECTED]
- Participe de outras listas de discussão sobre a linguagem Java.
  Saiba mais em http://www.soujava.org.br/lista.htm
--------------------------------------------------------------------------------
- Para assinar este boletim: mailto:[EMAIL PROTECTED]
- Para cancelar sua assinatura: mailto:[EMAIL PROTECTED]
- Dicas anteriores: http://www.mail-archive.com/dicas-list%40soujava.org.br
- Para discutir sobre as dicas, acesse o Mundo OO (http://www.mundooo.com.br)


Responder a