Kotlin не требует объявлять или перехватывать исключения в сигнатуре: все исключения unchecked. Это упрощает композицию API, но переносит ответственность за ошибки в контракт и обработку.
Почему в Kotlin нет checked exceptions в отличие от Java?
Kotlin не требует объявлять или перехватывать исключения в сигнатуре: все исключения unchecked. Это упрощает композицию API, но переносит ответственность за ошибки в контракт и обработку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Kotlin не требует объявлять или перехватывать исключения в сигнатуре: все исключения unchecked. Это упрощает композицию API, но переносит ответственность за ошибки в контракт и обработку.
Checked exceptions в Java дают компиляторную дисциплину, но могут разрастаться по цепочке вызовов и приводить к механическим catch/rethrow. Kotlin выбрал иной компромисс: try/catch остаётся, но не навязывается каждому вызывающему коду. Для ожидаемых доменных исходов можно использовать явные result/sealed-типы. При взаимодействии с Java и другими платформами применяется @Throws, однако она не превращает Kotlin в язык с обязательной проверкой исключений.
Источник: kotlinlang.org.