Kotlin:
Tratamento de erros

Como fazer:

Kotlin fornece try, catch, finally, e throw para gerenciar erros. Veja como usá-los:

fun main() {
    val numerador = 10
    val denominador = 0

    try {
        val resultado = numerador / denominador
        println("Resultado: $resultado")
    } catch (e: ArithmeticException) {
        println("Não é possível dividir por zero, amigo.")
    } finally {
        println("Isso acontece independente do que ocorrer.")
    }
}

Saída:

Não é possível dividir por zero, amigo.
Isso acontece independente do que ocorrer.

Se algo der errado no bloco try, a execução salta para o catch. Ele captura o erro específico lançado (ArithmeticException neste caso). O bloco finally é executado depois—não importa o resultado.

Mergulho Profundo

O bloco try-catch existe desde os primeiros dias de programação—é como uma rede de segurança. Kotlin também oferece throw para lançar manualmente uma exceção na arena, e há finally para código que deve ser executado—trabalho de limpeza, frequentemente.

Alternativas incluem o tipo Result e o try de Kotlin como uma expressão.

val resultado: Result<Int> = try {
    Result.success(numerador / denominador)
} catch (e: ArithmeticException) {
    Result.failure(e)
}

Essa abordagem retorna um objeto Result—você obtém um sucesso ou uma falha sem o drama de uma exceção não tratada.

A implementação em Kotlin é elegante porque você pode usar try como uma expressão, o que significa que ele retorna um valor. Opções como essas tornam o tratamento de erros em Kotlin bastante versátil. É sobre escolher a ferramenta certa para o trabalho, assim como você faria em uma oficina.

Veja Também

  • Documentação de Kotlin sobre Exceções: Tratamento de Exceção em Kotlin
  • Documentação do tipo Result de Kotlin: Resultado Kotlin
  • Effective Java, 3ª Edição, de Joshua Bloch—ótimas percepções sobre exceções, apesar de ser específico para Java.