Выбрасывание исключения в Kotlin
Оператор throw создает исключение и
немедленно прерывает текущий участок кода.
Управление ищет подходящий catch выше
по стеку вызовов. Если его нет, программа
завершается с сообщением об ошибке.
throw IllegalArgumentException("message")
В учебных задачах удобно выбрасывать готовые
типы платформы. Исключение IllegalArgumentException
подходит, когда параметр нарушает правило:
fun requireEven(n: Int) {
if (n % 2 != 0) {
throw IllegalArgumentException("even only")
}
println(n)
}
try {
requireEven(3)
} catch (e: IllegalArgumentException) {
println("rejected")
}
Исключение ArithmeticException можно выбросить
явно, если деление на ноль проверяют вручную
до операции /:
fun safeDiv(a: Int, b: Int): Int {
if (b == 0) {
throw ArithmeticException("zero divisor")
}
return a / b
}
try {
println(safeDiv(8, 0))
} catch (e: ArithmeticException) {
println("cannot divide")
}
Текст в конструкторе исключения доступен
через e.message в блоке catch.
Сообщения в коде пишите на английском, как
и имена переменных.
Создайте функцию printIfPositive с
параметром n. Для n <= 0
выбросьте IllegalArgumentException
с сообщением "not positive".
Иначе выведите n.
В main вызовите printIfPositive(-2)
внутри try. В catch для
IllegalArgumentException выведите
e.message.