Pular para o conteúdo

cheat/excecoes

Exceções e recursos

Falhar de forma previsível e sempre fechar o que abriu.

Consulta

Fechar recurso automaticamente

try (var reader = Files.newBufferedReader(caminho)) {
  return reader.lines().toList();
}

Fecha na ordem inversa da abertura, inclusive quando o corpo lança.

Exceção própria com contexto

public class NaoEncontrado extends RuntimeException {
  public NaoEncontrado(long id) {
    super("registro não encontrado: " + id);
  }
}

Preservar a causa

catch (SQLException e) {
  throw new FalhaNoRepositorio("ao salvar pedido", e);
}

Sem passar `e`, o stack trace da origem some e o log vira adivinhação.

Ler arquivo inteiro

String texto = Files.readString(Path.of("dados.txt"));