5

Exceptions em Kotlin

#Kotlin
Isaias Bueno
Isaias Bueno

O que é uma exceção?


Segundo o site dicio, temos a seguinte definição:

Ruptura de uma regra ou norma; desvio de um padrão estabelecido; rompimento do que se considera normal: não há regra sem exceção.”


Como faço para lançar uma exceção?


É muito fácil, como podemos ver no exemplo a seguir, basta usar a palavra reservada 'throw' antes da exceção.


fun main()

{throw Exception("Testando uma exceção")

}

As classes de exceção (exception) no Kotlin são descendentes da classe java.lang.Throwable e é possível passar algumas informações para instanciar um novo objeto, como:


Uma mensagem (detailMessage), que serve para detalhar o erro ocorrido para o desenvolvedor;


Uma causa (cause) vinculada, ou seja, uma outra exceção que deu origem ao erro. Esse valor pode ser nulo e isso significa que a causa é desconhecida ou inexistente.


Como faço para capturar uma exceção lançada?


A chamada da função deve estar dentro do bloco try, para que seja possível captura-lá e em seguida declarar o bloco catch com o tratamento desejado.


fun main() {

try {

// trecho de código com divisão por zero

} catch (ex: ArithmeticException) { 

// tratando a exceção NumberFormatException

}

}


Também podemos tratar várias exceções para um mesmo bloco de código. Isso é possível usando um bloco catch para cada tipo de exceção, sendo que as classes mais genéricas devem ficar após as classes mais específicas. Por exemplo, Exception depois de NumberFormatException.


fun main() {

 try {

 // função de processamento de notas

 } catch (ex: ArithmeticException) { 

 // tratando a exceção ArithmeticException

 } catch (ex: NumberFormatException) { 

 // tratando a exceção NumberFormatException

 } catch (ex: Exception) { 

 // tratando as exceções mais genéricas

 }

}

Expressões com try


O bloco try pode ser tratado como uma expressão em Kotlin e isso significa que ele devolverá um resultado.


val resultado: Int? = try { converter(variavel) } catch (e: NumberFormatException) { null }


O valor retornado sempre será a última da expressão do bloco try/catch. Para exemplo acima temos:

  • Para os casos de sucesso = o retorno da função converter(variavel)
  • Para os casos de falha = null


Nesse artigo, podemos entender um pouco mais sobre o conceito do fluxo de exceção e também como lançar, capturar e tratar uma exceção em nossos programas em Kotlin.



Por hoje é só pessoal, Sucesso nos estudos!




1
38

Comentários (1)

1
Miguel Júnior

Miguel Júnior

06/03/2021 17:15

Ótimo artigo.

Desenvolvedor Android|Kotlin

Brasil