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
Kotlin как выражение.
val result: Result<Int> = try {
Result.success(numerator / denominator)
} catch (e: ArithmeticException) {
Result.failure(e)
}
Этот подход возвращает объект Result
— вы получаете либо успех, либо неудачу без драмы необработанного исключения.
Реализация в Kotlin удобна, потому что вы можете использовать try
как выражение, что означает, что оно возвращает значение. Такие возможности делают обработку ошибок в Kotlin довольно универсальной. Речь идет о выборе подходящего инструмента для работы, как и в мастерской.
Смотрите также
- Документация Kotlin по исключениям: Обработка исключений в Kotlin
- Документация типа
Result
в Kotlin: Kotlin Result - “Эффективный Java”, 3-е издание, Джошуа Блох — отличные представления об исключениях, хотя и специфично для Java.