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.