0Pricing
Dart Academy · Урок

Конструкции 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 — локальная установка не требуется.

Все уроки этого курса

  1. throw, try и catch
  2. Конструкции on и типы исключений
  3. finally и гарантированная очистка
  4. Пользовательские исключения и rethrow
← Назад к Dart Academy