Kotlin:
Obsługa błędów

Jak to zrobić:

Kotlin zapewnia try, catch, finally oraz throw do zarządzania błędami. Oto jak ich użyć:

fun main() {
    val licznik = 10
    val mianownik = 0

    try {
        val wynik = licznik / mianownik
        println("Wynik: $wynik")
    } catch (e: ArithmeticException) {
        println("Nie można dzielić przez zero, kolego.")
    } finally {
        println("To się stanie niezależnie od wszystkiego.")
    }
}

Wynik:

Nie można dzielić przez zero, kolego.
To się stanie niezależnie od wszystkiego.

Jeśli coś pójdzie nie tak w bloku try, wykonanie przeskakuje do catch. Łapie on konkretny błąd, który został rzucony (ArithmeticException w tym przypadku). Blok finally jest wykonywany po nich - bez względu na wynik.

Wnikliwie

Blok try-catch jest używany od dawnych dni programowania – to jak sieć bezpieczeństwa. Kotlin oferuje również throw do ręcznego rzucania wyjątkiem, a także finally dla kodu, który musi zostać wykonany - często jest to praca porządkowa.

Alternatywy obejmują typ Result oraz try Kotlin jako wyrażenie.

val wynik: Result<Int> = try {
    Result.success(licznik / mianownik)
} catch (e: ArithmeticException) {
    Result.failure(e)
}

To podejście zwraca obiekt Result – otrzymujesz albo sukces, albo porażkę, bez dramatu nieobsłużonego wyjątku.

Implementacja w Kotlin jest schludna, ponieważ można używać try jako wyrażenia, co oznacza, że zwraca wartość. Takie wybory sprawiają, że obsługa błędów w Kotlinie jest dość wszechstronna. Chodzi o wybór odpowiedniego narzędzia do pracy, tak jak w warsztacie.

Zobacz również

  • Dokumentacja Kotlin dotycząca Wyjątków: Obsługa wyjątków Kotlin
  • Dokumentacja typu Result Kotlin: Result Kotlin -Efektywne Java, 3. wydanie, autorstwa Joshuy Bloch – świetne spojrzenie na wyjątki, aczkolwiek specyficzne dla Javy.