Bloco try-catch-finally

Definição

Esse conjunto de palavras reservadas servem para tratar exceções.

A política de tratativa varia de acordo com o contexto e aplicação, como por exemplo:

  • Salvar em um arquivo de log

  • Lançar uma outra excepção (geralmente customizada)

  • Imprimir no console

  • Realizar um rollback

  • Política de retentativa

A utilização da palavra reservada finally é opcional. Geralmente essa palavra é usada para fechar conexão com banco de dados ou com BufferedWriter ou BufferedReader

Sintaxe

try {
  // Código
} catch (e: Exception) {
  // Tratamento da exceção
}
try {
  // Código
} catch (e: Exception) {
  // Tratamento da exceção
} finally {
  // Código sempre executado
}

Exemplo

fun lerIdade(): Int? {
  val reader = BufferedReader(
      FileReader(
          File("src/main/resources/idades.txt")
      )
  )
 
  return try {
      Integer.parseInt(reader.readLine())
  } catch (e: NumberFormatException) {
      null
  } finally {
      reader.close()
  }
}