Kotlin:
Обробка помилок

Як це робити:

Kotlin надає try, catch, finally та throw для управління помилками. Ось як їх використовувати:

fun main() {
    val numerator = 10
    val denominator = 0

    try {
        val result = numerator / denominator
        println("Результат: $result")
    } catch (e: ArithmeticException) {
        println("На нуль ділити не можна, друже.")
    } finally {
        println("Це станеться незалежно від чого.")
    }
}

Вивід:

На нуль ділити не можна, друже.
Це станеться незалежно від чого.

Якщо у блоку try виникає щось не так, виконання переходить до catch. Він ловить конкретну помилку, що виникла (ArithmeticException у цьому випадку). Блок finally виконується після цього — незалежно від результату.

Більш детально

Блок try-catch існує з самого початку програмування — це своєрідна сітка безпеки. Kotlin також пропонує throw для ручного кидання винятку в код, і є finally для коду, який мусить виконатися — це часто завершальна робота.

Альтернативи включають тип Result та використання try як виразу.

val result: Result<Int> = try {
    Result.success(numerator / denominator)
} catch (e: ArithmeticException) {
    Result.failure(e)
}

Цей підхід повертає об’єкт Result — ви отримуєте або успіх, або невдачу, без драми некерованого винятку.

Реалізація в Kotlin зручна, тому що ви можете використовувати try як вираз, що означає, що воно повертає значення. Такі вибори роблять обробку помилок у Kotlin досить гнучкою. Йдеться про вибір правильного інструменту для завдання, точно так само, як ви б вибрали в майстерні.

Дивіться також

  • Документація Kotlin по Винятках: Обробка винятків у Kotlin
  • Документація Kotlin типу Result: Kotlin Result
  • “Ефективне Java, 3-те видання” Джошуа Блоха — гарні інсайти щодо винятків, хоча і специфічно для Java.