0Pricing
Dart Academy · Урок

throw, try и catch

Обнаружение сбоев и реакция на них

«throw, try и catch» — бесплатный урок Dart Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Когда всё идёт не так

Программы сталкиваются с проблемами: неправильными входными данными, отсутствующими файлами, ошибками в математических вычислениях. Dart сообщает об этом с помощью исключения, а не молча ведёт себя неправильно. 🚨

Выбрасывание исключения

Вы сами сообщаете о проблеме с помощью throw. Обычный ход выполнения останавливается в этом месте, а управление передаётся обработчику.

throw Exception('Something failed');

Вы можете выбросить что угодно

Dart позволяет throw почти любой объект, даже String. На практике следует выбрасывать настоящие объекты Exception или Error, чтобы обработчики оставались понятными.

throw FormatException('Bad number');

Защита рискованного кода

Поместите код, который может завершиться неудачей, в блок try. Dart выполняет его как обычно, но готов отреагировать, если произойдёт выбрасывание исключения.

try {
  risky();
}

Перехват проблемы

Блок catch выполняется только тогда, когда блок try выбрасывает исключение. Он получает выброшенный объект, чтобы Вы могли изучить его и отреагировать.

try {
  risky();
} catch (e) {
  print('Caught: $e');
}

Переход к следующему обработчику

Когда выполняется throw, оставшаяся часть блока try сразу пропускается. Dart переходит непосредственно к подходящему блоку catch.

Чтение объекта ошибки

Переменная в catch (e) содержит всё, что было выброшено. Обычно её вывод показывает полезное сообщение с описанием проблемы.

catch (e) {
  print(e);
}

Получение трассировки стека

Добавьте вторую переменную в catch, чтобы получить трассировку стека. Она показывает путь вызовов, приведший к сбою, что упрощает отладку.

catch (e, stack) {
  print(stack);
}

Восстанавливайтесь, а не завершайте работу с ошибкой

Главная цель перехвата — восстановление. Вместо аварийного завершения можно записать сообщение в журнал, повторить попытку или показать пользователю понятный запасной вариант.

Неперехваченное исключение приводит к сбою

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

Полный пример

Вот полный шаблон: throw внутри try, перехват и корректная обработка, после чего выполнение продолжается.

try {
  throw Exception('Oops');
} catch (e) {
  print('Handled: $e');
}

Быстрая проверка

Какой блок реагирует на выброшенное исключение?

Итоги

Теперь Вы умеете сообщать о проблемах с помощью throw, защищать рискованный код в try и восстанавливаться в catch. Эта тройка помогает программе продолжать работу. 🎉

Часто задаваемые вопросы

Урок «throw, try и catch» бесплатный?

Да — полный текст урока «throw, try и catch» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «throw, try и catch»?

Обнаружение сбоев и реакция на них Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «throw, try и catch»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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