DEV Community

Matheus de Gondra
Matheus de Gondra

Posted on

Exception vs Error no Java

Introdução

Ao estudar sobre java você pode ter se deparado com o conceito de Exception (exceção) e Error (erro). Mas, qual a diferença entre eles?

As duas classes, Error e Exception, são subclasses da Throwable. Isso permite que elas sejam lançadas com throw para mudar o fluxo da aplicação.

Diagrama de classes

Mas o uso dessas duas classes são diferentes

Error

A classe, e as subclasses, de Error representam erros do ambiente de execução JVM. Esses tipos de erros não devem ser tratados pelo programador e sim pelos programadores da JVM.

Algumas classes que herdam de Error são:

  • VirtualMachineError -> Erro na JVM
  • StackOverflowError -> Erro de estouro de pilha
  • OutOfMemoryError -> Erro de falta de memoria para alocar um objeto

Exception

As exceções são um tipo de erro diferente, elas são fluxos alternativos do seu programa. O programador pode e deve lidar com elas ao desenvolver um software.

Fluxos de falha, que são diferentes de erro, são representados pelas exceções. Por exemplo, ao ler um arquivo há dois fluxos possíveis: O arquivo existe e é possível ler (caso de sucesso) ou o arquivo pode não existir (caso de falha). Isso não é um erro é um fluxo de falha e nesses casos ocorre de uma exceção IOException ser lançada.

Programadores devem lidar com os casos de falha capturando as exceções com um bloco try/catch ou try/catch/finally.

Algumas classes que herdam de Exception são:

  • IOException -> exceção ao lidar com arquivos
  • RuntimeException -> exceção que ocorre no momento de execução
  • NumberFormatException -> exceção ao converter string que não são números

Top comments (0)