lucianodacunha.net

terça-feira, 7 de fevereiro de 2012

Tratando exceções em Java

A palavra exceção é clara. Algo que foge à regra. Ou seja, quando um código não se comporta da forma que deveria, muito provalvelmente ocorrerá uma exceção.

Para tratar exceções utilize um bloco de código chamado try/catch. Pense como se vc estivesse tentando executar uma tarefa e caso ocorresse um problema, existisse alguém preparado para capturar o erro. Ex.

criança tentando andar de bicicleta{

 }
 Adulto preparado para ampará-la caso cair {

 }

O exemplo pode até não ser um dos mais felizes, mas é bem o que o try do Java faz. Caso entre o ponto de inicio e fim a referida criança sofra alguma queda, o adulto, preparado para ampará-la, fará com que ela se equilibre e pelo menos termine o trajeto.


Agora vamos deixar de conversá mole e vamos pro código.

/**
 * Código sem tratamento de erros
 * O objetivo é realizar um divisão e exibir o valor do resultado.
 */

class DivisaoPorZero{
 public static void main(String[] args){

  System.out.println(".. iniciando o processamento!");

  int inteiro = 5 / 0;

  System.out.println("Resultado da divisão: " + inteiro);

  System.out.println(".. finalizando o processamento!");

 }

}

Apesar de simples a tarefa a ser executada, caso ocorrer algum problema durante sua execução, não estamos preparados para tratarmos a situação. Desta forma, o programa não será finalizado corretamente.

Inserindo a estrutura try{} catch{}, já podemos ter um resultado diferente...vejamos...

class TestException1{

 public static void main(String[] args){

  System.out.println(".. iniciando o processamento!");

  // ..tentando realizar um divisão...
  try {

   int inteiro = 5 / 0;

   System.out.println("Resultado da divisão: " + inteiro);

  // ..código preparado para capturar qualquer erro até aqui.
  } catch(Exception e){

   // ..capturado o erro, informa o motivo.
   System.err.println(e);

  }

  System.out.println(".. finalizando o processamento!");
 }

}

..a tarefa é a mesma, porém agora estamos preparados para o tratamento de algum erro que ocorrer. Mesmo que a tarefa não seja feita corretamente, estamos garantindo que pelo menos finalizaremos o processamento.

Algumas observações:
  • Se declarar um try, torná-se obrigado declarar um catch ou finally;
  • Junto ao catch, deverá existir um tipo de exceção que tratará o possível erro (Exception e).
Como mencionei acima, existe ainda um outro cara relacionado ao try, o finally.

O finally é um terceiro e último bloco que adicionado à estrutura try, terá seu processamento garantido e em qualquer caso, ou seja, caso ocorra erro ou não. Geralmente utilizado para liberar recursos.

class TestException3{
 public static void main(String[] args){

  try{

   // troque o 1 por 0, uma exceção será gerada e da mesma forma
   // o bloco finally será processado.
   int i = 5 / 1;

   System.out.println("Quociente: " + i);

  } catch(Exception e){

   e.printStackTrace();

  }finally {

   System.out.println("..processamento obrigatório!");
  }

 }

}

Marcadores: ,

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]



<$I18N$LinksToThisPost>:

Criar um link

<< Página inicial