Ответ
В Kotlin исключения делятся на checked (проверяемые) и unchecked (непроверяемые). В отличие от Java, все исключения в Kotlin — unchecked, то есть компилятор не требует их явной обработки.
Основные типы исключений:
Exception– базовый класс для пользовательских исключений.RuntimeException– непроверяемые исключения (например,NullPointerException).IllegalArgumentException,IllegalStateException– частые unchecked исключения.
Обработка:
try {
val result = 10 / 0
} catch (e: ArithmeticException) {
println("Деление на ноль!")
} finally {
println("Блок finally выполнится всегда")
}
Создание кастомного исключения:
class MyException(message: String) : Exception(message)
throw MyException("Ошибка!")
Kotlin поощряет использование null-безопасности (?, !!, ?:) вместо исключений там, где возможно.
Ответ 18+ 🔞
Ну ты представляешь, в Kotlin с исключениями вообще отдельная история, ёпта. В Java, помнишь, были эти проверяемые исключения, которые тебе компилятор в рот совал, пока ты их не обработаешь? Так вот, в Kotlin — все исключения непроверяемые (unchecked). То есть компилятор тебе на них насрать, он не будет орать, что ты их не ловишь. Сам решай, где try-catch впендюрить, а где пусть летит наверх и всех накрывает.
Какие там бывают, эти исключения:
Exception– ну, это батя, основа основ. От него свои кастомные ошибки плодишь.RuntimeException– это уже наши любимые непроверяемые ребята, вродеNullPointerException. Те самые, от которых всё падает неожиданно и красиво.IllegalArgumentException,IllegalStateException– частые гости. Первое — когда аргумент кривой передали, второе — когда объект в таком состоянии, что делать с ним нихуя нельзя.
А ловится это всё вот так, просто:
try {
val result = 10 / 0 // Ну ясен хуй, тут пиздец
} catch (e: ArithmeticException) {
println("Деление на ноль, гений!") // Ловим конкретную хрень
} finally {
println("А этот блок выполнится всегда, хоть трава не расти")
}
Хочешь свою, уникальную ошибку? Да хуй с ним, создавай!
class MyException(message: String) : Exception(message) // Наследуешься и всё
throw MyException("Всё пропало, шеф!") // Кидаешь её, где захочешь
И главная мысль, чувак: Kotlin так устроен, что он настойчиво предлагает не доводить до исключений. Зачем тебе try-catch, если можно использовать null-безопасность? Вот эти штуки: ?, !!, ?:. Они помогают обрабатывать потенциальные косяки элегантно, без вот этого всего try на овердохуища строк. Но если уж реально пиздец — тогда да, кидай исключение. Сам решай, волнение ебать.