A hierarquia de exceções
Uma exceção em Java é um objeto. A classe raiz de todas as exceções é
java.lang.Throwable. Apenas objetos dessa classe ou de suas
clsses derivadas podem ser gerados, propagados e capturados através do
mecanismo de tratamento de exceções.
A classe Throwable tem duas subclasses:
- java.lang.Exception
- É a raiz das classes derivadas de Throwable que indica
situações que a aplicação pode querer capturar e realizar um
tratamento que permita prosseguir com o processamento.
- java.lang.Error
- É a raiz das classes derivadas de Throwable que indica
situações que a aplicação não deve tentar tratar. Usualmente
indica situações anormais, que não deveriam ocorrer.
Exemplos de exceções já definidas em Java incluem:
- java.lang.ArithmeticException
- indica situações de erros em processamento aritmético, tal como uma
divisão inteira por 0.
- java.lang.NumberFormatException
- indica que tentou-se a conversão de uma string para um
formato numérico, mas seu conteúdo não representava adequadamente
um número para aquele formato. É uma subclasse de
java.lang.IllegalArgumentException.
- java.lang.ArrayIndexOutOfBoundsException
- indica a tentativa de acesso a um elemento de um arranjo fora de seus
limites -- ou o índice era negativo ou era maior ou igual ao
tamanho do arranjo. É uma subclasse de
java.lang.IndexOutOfBounds, assim como a classe
java.lang.StringIndexOutOfBounds.
- java.lang.NullPointerException
- indica que a aplicação tentou usar null onde uma referência
a um objeto era necessária -- invocando um método ou acessando um
atributo, por exemplo.
- java.lang.ClassNotFoundException
- indica que a aplicação tentou carregar uma classe mas não foi
possível encontrá-la.
- java.io.IOException
- indica a ocorrência de algum tipo de erro em operações de entrada e
saída. É a raiz das classes java.io.EOFException (fim de
arquivo ou stream), java.io.FileNotFoundException
(arquivo especificado não foi encontrado) e
java.io.InterruptedIOException (operação de entrada ou
saída foi interrompida), entre outras.
Entre os erros definidos em Java, subclasses de java.lang.Error,
estão java.lang.StackOverflowError e
java.lang.OutOfMemoryError. São situações onde não é possível
uma correção a partir de um tratamento realizado pelo próprio programa que
está executando.
Como exceções são objetos, podem incluir atributos. A classe
Throwable inclui o registro do estado atual da pilha d chamdas de
métodos e uma string associada a uma mensagem de
erro, que pode ser obtida para qualquer exceção através do método
Throwable.getMessage().
Outras exceções podem inclui ainda outras informações que possam vir a
ser relevantes para o seu tratamento. Por exemplo,
java.io.InterruptedIOException inclui um atributo inteiro,
bytesTransferred, para indicar quantos bytes foram transferidos
antes da interrupção da operação ocorrer.
© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP
Last modified: Mon Nov 8 12:28:14 EDT 1999