Menu
Coddy logo textTech

Перехват конкретных ошибок

Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 52 из 63.

Блок try выполняет код, который может выбросить исключение. Блок catch обрабатывает соответствующее исключение и позволяет продолжить выполнение после try/catch. Перехватывай конкретное ожидаемое исключение, например NumberFormatException при вызове toInt, чтобы несвязанные ошибки программирования не скрывались молча.

Внутри main:

try {
    println("oops".toInt())
} catch (error: NumberFormatException) {
    println("invalid")
}

При разборе возникает исключение до того, как println получает число, поэтому соответствующий блок catch выводит запасное сообщение.

Перехватите конкретное исключение, которое, как ожидается, вызовет ваша операция.

challenge icon

Задание

Средне

Завершите parseMessage с параметром text: String. Используйте try/catch вокруг text.toInt() без обрезки пробелов. Верните value=n при успехе, заменив n разобранным целым числом, или invalid, если выброшено исключение NumberFormatException.

Если выше не указаны более строгие ограничения, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для разбора, может содержать недопустимые представления или представления, выходящие за допустимый диапазон, как описано выше.

Верните значение типа String. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его размера, за которым следуют его элементы, а map начинается с количества записей, за которым следуют каждые ключ и значение. Вложенные списки повторяют формат «размер и элементы» для каждой строки. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.

Попробуйте сами

fun parseMessage(text: String): String {
    // Напишите ваше решение здесь.
    return ""
}
fun main() {
    val text = readLine().orEmpty()
    println(parseMessage(text))
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Песочница Kotlin