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

Типы исключений в Dart

У каждого исключения есть тип. В блоке catch после on указывают именно тип, чтобы реагировать на конкретную проблему. Ниже - типы, которые чаще всего встречаются в начальных задачах.

Исключение FormatException возникает, когда строку нельзя преобразовать в число. Так бывает после int.parse для текста вроде "abc":

var raw = "12x"; try { print(int.parse(raw)); } on FormatException catch (e) { print("invalid number"); }

Исключение UnsupportedError связано с целочисленным делением на ноль через оператор ~/:

var x = 10; var y = 0; try { print(x ~/ y); } on UnsupportedError catch (e) { print("bad division"); }

Ошибка RangeError появляется при обращении к элементу списка или строки по индексу вне допустимого диапазона:

var items = ["a", "b", "c"]; try { print(items[5]); } on RangeError catch (e) { print("no such index"); }

Исключение ArgumentError сигнализирует, что аргумент функции не подходит по смыслу. Его часто создают сами, когда значение нарушает правило задачи:

void printPositive(int n) { if (n <= 0) { throw ArgumentError("need positive"); } print(n); } try { printPositive(-1); } on ArgumentError catch (e) { print("bad argument"); }

В одном блоке catch после on указывают один тип. Если нужно по-разному реагировать на разные сбои, добавляют несколько блоков catch - это разберем в следующем уроке.

Дана строка input. Получите из нее целое число через int.parse. При FormatException выведите "format".

Даны numerator и denominator. Вычислите частное через ~/. При UnsupportedError выведите "math".

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