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 — локальная установка не требуется.
Все уроки этого курса
- throw, try и catch
- Конструкции on и типы исключений
- finally и гарантированная очистка
- Пользовательские исключения и rethrow