Introdução
Continuando aprendizado e descoberta sobre Kotlin. Falaremos sobre Exception.
Recursos da linguagens observadores e experimentados
Nessa seção, pretendo falar de alguns recursos que pude experimentar durante o curso, e pratiquei em um projeto piloto que está disponível em um repositório no meu github onde pretendo colocar os demos do que ando testando com Kotlin. Esse repositório é o kotlin-lab.
Exceptions
Exceptions em Kotlin todas descedem de Throwable. Todas possuem uma mensagem, stack trace e uma causa que é um parâmetro Exceptional.
Sintaxe da linguagem para exceções:try {
// some code
}
catch (e: SomeException) {
// handler
}
finally {
// optional finally block
}
Em Kotlin, existe o try é uma expressão, e consegue ser usada como abaixo:val a: Int? = try { parseInt(input) } catch (e: NumberFormatException) { null }
Kotlin não possui exceções checadas. Segundo Brucel Eckel, ele disse:
Examination of small programs leads to the conclusion that requiring exception specifications could both enhance developer productivity and enhance code quality, but experience with large software projects suggests a different result – decreased productivity and little or no increase in code quality.
Outros textos sobre exceções checadas no Java:
- Java’s checked exceptions were a mistake (Rod Waldhoff)
- The Trouble with Checked Exceptions (Anders Hejlsberg)
Em Kotlin existe o tipo Nothing que é uma expressão retornada quando throw é lançado. Não possui instância. Quando o compilador vê esse objeto, ele nunca retorna normalmente e irá seguir o fluxo da operação, assumindo que houve uma exceção. É como se fosse um “abafar” exception provido pela linguagem.
Exemplo de uso:val s = person.name ?: fail("Name required")
println(s) // 's' is known to be initialized at this point
Conclusão
Nesse estudo, apresentei alguns recursos do Kotlin que são bastante inovadores para mim que vim da linguagem Java. Espero continuar aprendendo.
Outras Fontes:
- https://kotlinlang.org/docs/tutorials/kotlin-for-py/exceptions.html
- https://kotlinlang.org/docs/reference/exceptions.html
- https://taverna.devall.com.br/t/o-s-erro-s-de-1-bilhao-de-dolares-bem-mais/276
- https://medium.com/@gustavoramos00/option-x-null-o-erro-de-1-bilh%C3%A3o-de-d%C3%B3lares-7c746480519c
- https://medium.com/@joelamalio/kotlin-exce%C3%A7%C3%B5es-865767f7e46