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