Atualizado: 16/08/2025

Este conteúdo é original e não foi gerado por inteligência artificial.

Classes de Exceção no Java

A superclasse de todas as exceções em Java é Throwable. A partir dela derivam diretamente duas classes: Error e Exception. Todos os outros tipos de exceção são descendentes de uma dessas duas.

A classe Error representa falhas internas da Máquina Virtual Java (JVM). Esses erros indicam problemas graves no ambiente de execução e normalmente não devem (ou não podem) ser tratados pelo programador.

As exceções herdam de Exception. Dentro desse grupo, destaca-se RuntimeException, que é a superclasse das chamadas exceções não verificadas (unchecked exceptions). O compilador não exige que essas exceções sejam tratadas nem declaradas com throws no cabeçalho do método. Geralmente resultam de erros de programação, como conversões de tipo inválidas ou acesso a índices inexistentes.

Exemplos comuns de exceções não verificadas:

  • ArithmeticException – divisão por zero.
  • IndexOutOfBoundsException – índice fora dos limites de um array ou lista.
  • IllegalArgumentException – argumento inválido passado para um método.
  • NullPointerException – uso de uma referência nula.
  • NumberFormatException – falha na conversão de string para número.

Todas as outras subclasses de Exception que não descendem de RuntimeException são exceções verificadas (checked exceptions), que devem ser tratadas com try..catch ou declaradas no método com throws.

Exemplos de exceções verificadas:

  • CloneNotSupportedException – tentativa de clonar um objeto cuja classe não implementa Cloneable.
  • InterruptedException – thread interrompida por outra thread.
  • ClassNotFoundException – classe solicitada não encontrada.

Essas exceções podem ser tratadas ou propagadas ao método chamador:

public Person clone() throws CloneNotSupportedException {
    Person p = (Person) super.clone();
    return p;
}

Hierarquia básica de exceções

Throwable
 ├── Error
 └── Exception
      ├── RuntimeException
      │    ├── ArithmeticException
      │    ├── IndexOutOfBoundsException
      │    ├── IllegalArgumentException
      │    ├── NullPointerException
      │    └── NumberFormatException
      ├── CloneNotSupportedException
      ├── InterruptedException
      └── ClassNotFoundException

Métodos úteis herdados de Throwable

Todas as exceções herdam métodos de Throwable que ajudam no diagnóstico:

  • getMessage() – retorna a mensagem associada à exceção.
  • getStackTrace() – retorna um array com a pilha de chamadas.
  • printStackTrace() – imprime a pilha de chamadas no console.

Exemplo:

try {
    int x = 6 / 0;
}
catch (Exception ex) {
    ex.printStackTrace();
}

Resumo

  • Todas as exceções descendem de Throwable, que se divide em Error e Exception.
  • Error indica falhas graves na JVM, normalmente não tratáveis.
  • RuntimeException é a base das exceções não verificadas, que não precisam ser tratadas nem declaradas.
  • Exemplos de não verificadas: NullPointerException, ArithmeticException, IllegalArgumentException.
  • As exceções verificadas precisam ser tratadas ou declaradas no método.
  • Métodos como getMessage(), getStackTrace() e printStackTrace() ajudam na análise de erros.
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com