Lidando com Exceções

Created
Mar 21, 2021 10:05 PM
Objetivo
Revisar
Estado
Finalizado

Cláusulas try/catch/finally

Declaração de try com recurso

Classes que implementem AutoCloseable podem ser instanciadas utilizando:
try (BufferedReader in = new BufferedReader(new FileReader("some.txt")); BufferedWriter out = new BufferedWriter(new FileWriter("other.txt"))) { String text = in.readLine(); out.writeLine(text); } catch (Exception e) { /*handle exceptions*/ }
  • Podem produzir exceções suprimidas. Essas são exceções que ocorrem no bloco finally implicitamente formado pelo try com recurso. Elas podem ser recuperadas através do método getSuppressed().

Múltiplas declarações catch

  • As exceções devem ser ordenadas de uma menos específica para uma mais específica.
  • Um mesmo bloco catch pode capturar mais de um tipo de exceção.

Exceções customizadas

Criação

  • Podem ser checadas ou não-checadas. Sendo que as checadas devem estender a classe Exception ou alguma de suas descendentes e, exceções não-checadas devem estender RuntimeExepction ou alguma de suas subclasses.
  • Outro tipo de "exceção" provêm da classe Error. Essa classe e suas descendentes se comportam da mesma forma que exceções não-checadas. Porém, elas representam erros não relacionados com a aplicação, como AssertionError, VirtualMachineError, OutOfMemoryError.
  • Exceções checadas normalmente são utilizadas para problemas comuns à execução da aplicação. Em oposição as não-checadas que costumam representar um bug e precisam ser corrigidas ao invés de capturadas.

Utilização

  • Uma exceção checada precisa ser capturada ou explicitamente propagada.
  • É possível capturar o erro original utilizando o método getCause().