Paradigmas e linguagem de programação
Temos três métodos essenciais para o rastreamento de pilha: printStackTrace, getStackTrace, getMessage presentes na classe Throwable. printStackTrace: Gera a saída do rastreamento de pilha para o fluxo de erro padrão. getStackTrace: Recupera as informações sobre o rastreamento de pilha. getMessage: Retorna a string descritiva armazenada em uma exceção.
Utiliza-se o getStackTrace para enviar as informações de rastreamento de pilha para outros fluxos que não o seja o fluxo de erro padrão. Para imprimir as informações utilizamos printStackTrace, no qual é muito útil no processo de teste de depuração da pilha.
Hierarquia de classes de exceção
As classes de exceção herdam direta ou indiretamente da classe Exception, formando uma hierarquia de herança. Pode-se estender essa hierarquia com suas próprias classes de exceção.
A Figura abaixo mostra uma pequena parte da hierarquia de herança da classe Throwable (uma subclasse de Object), que é a superclasse da classe Exception. Somente objetos Throwable podem ser utilizados com o mecanismo de tratamento de exceções. A classe Throwable tem duas subclasses: Exception e Error.
A classe Exception e suas subclasses representam situações excepcionais que podem ocorrer em um programa Java. Essas subclasses podem ser capturadas e tratadas pelo aplicativo.
A classe Error e suas subclasses representam situações anormais que podem acontecer na JVM. Erros não acontecem frequentemente. Eles não devem ser capturados pelos aplicativos. Os aplicativos normalmente não se recuperam de Errors.
Exceções verificadas e não verificadas
O compilador impõe um requisito catch-or-declare para exceções verificadas. O tipo de uma exceção determina se a exceção é verificada ou não verificada.
As subclasses diretas ou indiretas da classe RuntimeException (pacote java.lang) são exceções não verificadas. Costumam ser causadas por deficiências no código do seu programa (por exemplo,