Конструкции on и типы исключений
Точная обработка конкретных ошибок
«Конструкции on и типы исключений» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
Не все ошибки одинаковы
Ошибка файла и ошибка формата — разные проблемы. Dart позволяет перехватывать их по типу, чтобы для каждой использовать правильную реакцию. 🎯
Ключевое слово on
Используйте on, чтобы перехватывать исключения только одного типа. Блок выполняется лишь тогда, когда выброшено исключение именно этого вида.
try {
parse();
} on FormatException {
print('Bad format');
}С сохранением объекта
Объедините on с catch, чтобы фильтровать исключения по типу и одновременно получать объект ошибки с подробностями сообщения.
on FormatException catch (e) {
print(e.message);
}Порядок имеет значение
Dart проверяет конструкции on сверху вниз и использует первое совпадение. Размещайте конкретные типы перед общими, иначе конкретные обработчики никогда не выполнятся.
Несколько конструкций on
Добавьте несколько конструкций on к одному try. Каждая обрабатывает исключения определённого типа с собственной логикой.
try {
work();
} on FormatException {
} on RangeError {
}Общий обработчик в конце
Обычный catch без указания типа перехватывает всё оставшееся. Размещайте его последним как страховочную сетку после типизированных конструкций.
} on FormatException {
} catch (e) {
print('Other: $e');
}Exception и Error
Dart разделяет сбои на Exception для проблем, которые можно обработать, и Error для ошибок программирования, которые следует исправить, а не перехватывать.
Распространённые встроенные типы
Вы встретите FormatException, RangeError, StateError и ArgumentError. Знание этих типов позволяет выполнять точный перехват.
Перехват супертипа
Конструкция on Exception соответствует любому подтипу Exception. Используйте общий тип, когда несколько связанных ошибок должны обрабатываться одним обработчиком.
try {
go();
} on Exception catch (e) {
log(e);
}Преимущество фильтрации по типу
Типизированные обработчики делают код понятнее: Вы по-разному реагируете на отсутствующий файл и неправильные входные данные, вместо того чтобы один большой catch пытался угадать причину.
Собираем всё вместе
Здесь показан переход от конкретного к общему: сначала типизированная конструкция on, затем общий обработчик для безопасной обработки всего остального.
try {
run();
} on FormatException catch (e) {
print(e);
} catch (e) {
print('Unknown');
}Быстрая проверка
Как перехватить исключение только одного конкретного типа?
Итоги
Теперь Вы умеете выбирать ошибки с помощью on, располагать конструкции от конкретных к общим и добавлять общий обработчик. Точная обработка и чистый код. ✅
Часто задаваемые вопросы
Урок «Конструкции on и типы исключений» бесплатный?
Да — полный текст урока «Конструкции on и типы исключений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Конструкции on и типы исключений»?
Точная обработка конкретных ошибок Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Конструкции on и типы исключений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- throw, try и catch
- Конструкции on и типы исключений
- finally и гарантированная очистка
- Пользовательские исключения и rethrow