Pergunta

O que são Exceptions?

Resposta

As Exceções (Exceptions) são um conjunto de classes destinadas a sinalização de erros ocorridos em tempo de execução e que pode ser usadas para prover para tratamento específico dos erros através das diretivas try catch e try finally. Existe uma classe básica denominada Exception existente no pacote java.lang.

A idéia central é que ao invés de colocarmos vários testes no código para detectar e contonar eventuais erros ou condições indesejadas efetuamos a programação para o caso ideal (sem tratamento direto de erros) e isolamos os trechos problematicos (onde podem ocorrer tais erros) com as diretivas try.

Se ocorre algum erro o fluxo do programa é desviado do bloco isolado pelo try para o bloco catch que trata a exceção especificada ou genérica. Podemos ainda usar uma rotina de finalizacao (finally. Por exemplo, como garantir que a string contida num argumento pode ser convertida em inteiro e como evitar erros caso não seja fornecida?

public static final void main(String args[]) {
  try {
    // Nao nos preocupamos com problemas
    for (int i=0; i<Integer.parseInt(args[0]);i++) {
      System.out.println("Testando...");
    // outros comandos do bloco
  } catch (InvalidNumberFormatException e) {
    // Aqui pegamos os erros de conversao
    System.out.println("Argumento invalido!");
  } catch (OutOfBoundsException e) {
    // Aqui pegamos a falta de argumentos
    System.out.println("Numero insuficiente de argumentos!");
  }
}

Note que o código fica bem dividido entre rotina normal e rotina de tratamento de erro. Além disso simplifica a programação. Outro ponto importante, no bloco catch o e é um nome qualquer para uma variável que recebe o objeto Exception criado quando da ocorrência de erros. Tais objetos podem ser usados dentro deste bloco e carregam informações adicionais sobre o erro.