Sobes.tech
Junior

Jak obsługiwać wyjątki w Kotlinie?

sobes.tech AI

Odpowiedź od AI

W Kotlinie do obsługi wyjątków używa się bloków try, catch i finally.

fun divide(a: Int, b: Int): Int {
    try {
        // Potencjalnie niebezpieczny kod
        return a / b
    } catch (e: ArithmeticException) {
        // Obsługa specyficznego wyjątku
        println("Błąd: dzielenie przez zero!")
        return 0
    } catch (e: Exception) {
        // Obsługa ogólnych wyjątków
        println("Wystąpił nieznany błąd: ${e.message}")
        throw e // Rzucenie wyjątku ponownie, jeśli konieczne
    } finally {
        // Kod, który zawsze się wykonuje (niezależnie od wyjątku)
        println("Czyszczenie zasobów lub inne działania końcowe")
    }
}
  • Blok try zawiera kod, który może wywołać wyjątek.
  • Blok catch służy do przechwytywania i obsługi wyjątków. Można użyć wielu bloków catch do obsługi różnych typów wyjątków. Typy wyjątków są przechwytywane w kolejności ich deklaracji.
  • Blok finally zawiera kod, który zawsze jest wykonywany, niezależnie od tego, czy wyjątek został rzucony, czy nie. Ten blok jest często używany do zwalniania zasobów.

W przeciwieństwie do Java, Kotlin nie ma obowiązkowych "checked" wyjątków. Wszystkie wyjątki w Kotlinie są "unchecked".

Aby rzucić wyjątek, używa się słowa kluczowego throw:

fun validateAge(age: Int) {
    if (age < 0) {
        throw IllegalArgumentException("Wiek nie może być ujemny")
    }
    // ...
}

Można również używać standardowych klas wyjątków z biblioteki lub tworzyć własne, dziedzicząc po Exception lub RuntimeException.