Блок 'try-catch'
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 39 из 65.
Теперь, когда вы понимаете, что такое исключения, давайте узнаем, как изящно обрабатывать их с помощью блока try-catch. Это фундаментальный инструмент, который предотвращает аварийное завершение вашей программы, когда что-то идет не так.
Блок try-catch работает путем оборачивания потенциально проблемного кода в секцию try. Если возникает исключение, вместо аварийного завершения программы Dart немедленно переходит к секции catch, где вы можете соответствующим образом обработать ошибку.
try {
// Код, который может вызвать исключение
int number = int.parse("abc");
} catch (e) {
// Код, который выполняется при возникновении исключения
print("Something went wrong: $e");
}В этом примере попытка преобразовать строку "abc" в целое число обычно приводила бы к сбою вашей программы. Однако, поскольку она обернута в блок try, исключение перехватывается и обрабатывается в блоке catch. Переменная e содержит информацию о том, что пошло не так.
Этот подход позволяет вашей программе продолжать работу даже при возникновении непредвиденных ситуаций, делая ваш код гораздо более надежным и удобным для пользователя.
Задание
ЛегкоСоздайте программу, которая безопасно преобразует входные строки пользователя в числа, используя блок try-catch. Ваша программа должна обрабатывать случаи, когда входные данные могут не быть допустимым числом, и предотвращать аварийное завершение программы.
- Прочитайте строковый ввод, который представляет собой число, которое необходимо преобразовать в целое число
- Используйте блок
try-catchдля безопасной попытки преобразования с помощьюint.parse() - Если преобразование прошло успешно, вычислите квадрат числа (умножьте его на самого себя)
- Если преобразование не удалось и возникло исключение, корректно обработайте ошибку
- Выведите соответствующий результат или сообщение об ошибке в точном формате, показанном ниже
Например, если на входе "5", ваша программа должна вывести:
Processing input: 5
Conversion successful!
The square of 5 is: 25Если на входе "abc", ваша программа должна вывести:
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerЕсли на входе "12", ваша программа должна вывести:
Processing input: 12
Conversion successful!
The square of 12 is: 144Ваша программа должна использовать блок try-catch для обертывания операции int.parse(). В секции try попытайтесь преобразовать входную строку в целое число и вычислить его квадрат. В секции catch обработайте любое исключение, возникающее во время преобразования, и выведите соответствующее сообщение об ошибке. Программа должна продолжать работать нормально независимо от того, успешно ли прошло преобразование или нет.
Шпаргалка
Используйте блоки try-catch для корректной обработки исключений и предотвращения сбоев программы:
try {
// Код, который может вызвать исключение
int number = int.parse("abc");
} catch (e) {
// Код, который выполняется при возникновении исключения
print("Something went wrong: $e");
}Блок try содержит потенциально проблемный код, в то время как блок catch обрабатывает любые возникающие исключения. Переменная e содержит информацию об исключении.
Попробуйте сами
import 'dart:io';
void main() {
// Прочитать входную строку
String? input = stdin.readLineSync();
// Вывести сообщение об обработке
print('Processing input: $input');
// TODO: Напишите свой код ниже
// Используйте блок try-catch для безопасного преобразования ввода в целое число
// Вычислите квадрат, если преобразование прошло успешно
// Обработайте любые исключения, возникающие во время преобразования
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей6Основы обработки ошибок
Что такое исключения?Блок 'try-catch'Перехват исключений с помощью 'on'Блок 'finally'Генерация исключенияИтоги: Безопасное деление