Menu
Coddy logo textTech

Блок '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 содержит информацию о том, что пошло не так.

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

challenge icon

Задание

Легко

Создайте программу, которая безопасно преобразует входные строки пользователя в числа, используя блок try-catch. Ваша программа должна обрабатывать случаи, когда входные данные могут не быть допустимым числом, и предотвращать аварийное завершение программы.

  1. Прочитайте строковый ввод, который представляет собой число, которое необходимо преобразовать в целое число
  2. Используйте блок try-catch для безопасной попытки преобразования с помощью int.parse()
  3. Если преобразование прошло успешно, вычислите квадрат числа (умножьте его на самого себя)
  4. Если преобразование не удалось и возникло исключение, корректно обработайте ошибку
  5. Выведите соответствующий результат или сообщение об ошибке в точном формате, показанном ниже

Например, если на входе "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 для безопасного преобразования ввода в целое число
  // Вычислите квадрат, если преобразование прошло успешно
  // Обработайте любые исключения, возникающие во время преобразования
  
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком