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)