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

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

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

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

int getAt(List<int> list, int index) { if (index < 0) { throw ArgumentError("negative index"); } return list[index]; }

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

var data = [10, 20, 30]; try { print(getAt(data, -1)); } on ArgumentError catch (e) { print("bad arg"); } on RangeError catch (e) { print("out of list"); }

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

void percent(int value) { if (value < 0 || value > 100) { throw ArgumentError("out of range"); } print("$value%"); } try { percent(150); } on ArgumentError catch (e) { print("invalid percent"); }

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

Создайте функцию divide с двумя целыми параметрами. При нулевом делителе создайте UnsupportedError. Иначе верните частное. Вызовите ее с нулевым делителем и выведите "fail" при ошибке.

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

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