Em Java, as exceções são categorizadas em três tipos principais: checked exceptions, unchecked exceptions e errors. Vamos diferenciar entre eles:
- Checked Exceptions (Exceções Verificadas):
- São exceções que o compilador obriga a serem tratadas ou declaradas no método que as lança, seja usando um bloco
try-catchou declarando a exceção no método com a cláusulathrows. - São subclasses de
Exception(excetoRuntimeExceptione suas subclasses). - Exemplos comuns incluem
IOException,SQLExceptioneClassNotFoundException.
// Exemplo de exceção verificada (IOException)
try {
FileInputStream file = new FileInputStream("arquivo.txt");
// Código que manipula o arquivo
file.close();
} catch (IOException e) {
// Tratamento da exceção
e.printStackTrace();
}
- Unchecked Exceptions (Exceções Não Verificadas):
- São exceções que não precisam ser declaradas ou tratadas pelo compilador.
- São subclasses de
RuntimeExceptione suas subclasses. - Normalmente resultam de erros de programação e indicam falhas no código que podem ser corrigidas.
- Exemplos comuns incluem
NullPointerException,ArrayIndexOutOfBoundsExceptioneArithmeticException.
// Exemplo de exceção não verificada (NullPointerException)
String texto = null;
int tamanho = texto.length(); // Lançará NullPointerException
- Errors:
- São problemas graves que geralmente ocorrem fora do controle do programador ou da máquina virtual Java.
- Não são destinados a serem tratados pelo código do aplicativo, e a maioria indica falhas irrecuperáveis.
- Exemplos incluem
OutOfMemoryError,StackOverflowErroreVirtualMachineError.
// Exemplo de erro (OutOfMemoryError)
List<byte[]> listaDeBytes = new ArrayList<>();
while (true) {
listaDeBytes.add(new byte[1024 * 1024]); // Causará eventualmente OutOfMemoryError
}
Em resumo, as exceções verificadas são aquelas que o compilador exige que você trate ou declare, as exceções não verificadas são aquelas que podem ser tratadas opcionalmente e os erros são problemas mais graves que geralmente indicam falhas na máquina virtual Java ou em recursos do sistema.