Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗ktPmExFn 444 of 522 menu
◀ ▶

Функция с исключением в Kotlin

Правила для параметров часто удобно держать внутри функции. Если значение не подходит, функция выбрасывает исключение, а вызывающий код решает, что показать пользователю.

Функция возвращает элемент списка по индексу только для неотрицательного индекса. Иначе - IllegalArgumentException:

fun getAt(list: List<Int>, index: Int): Int { if (index < 0) { throw IllegalArgumentException("negative index") } return list[index] }

Вызов оборачивают в try-catch, чтобы отловить и неверный аргумент, и выход за границы списка:

val data = listOf(10, 20, 30) try { println(getAt(data, -1)) } catch (e: IllegalArgumentException) { println("bad arg") } catch (e: IndexOutOfBoundsException) { println("out of list") }

Та же схема работает для проверки диапазона возраста или процента. Несколько catch подряд позволяют развести сообщения для разных типов сбоя в одном месте вызова.

fun percent(value: Int) { if (value < 0 || value > 100) { throw IllegalArgumentException("out of range") } println("$value%") } fun main() { try { percent(150) } catch (e: IllegalArgumentException) { println("invalid percent") } }

Создайте функцию ensureNonNegative с параметром n. Для n < 0 выбросьте IllegalArgumentException с сообщением "negative". Иначе верните n.

Создайте функцию divide с двумя целыми параметрами. При b == 0 выбросьте ArithmeticException. Иначе верните частное. В main вызовите ее с нулевым делителем в try-catch и выведите "fail" при ошибке.

Создайте функцию charAtSafe со строкой и индексом. При отрицательном индексе выбросьте IllegalArgumentException. Иначе верните символ строки. Обработайте вызов с большим индексом через IndexOutOfBoundsException.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить