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