РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
476 of 723 menu

Метод catchError

Метод catchError класса Future позволяет перехватить и обработать ошибку, которая возникла при выполнении асинхронной операции. В первый параметр мы передаем функцию-обработчик, которая принимает объект ошибки. Вторым необязательным параметром можно передать функцию test, которая проверяет, нужно ли обрабатывать данную ошибку. Метод возвращает новый Future, что позволяет строить цепочки вызовов.

Синтаксис

future.catchError(onError, [test])

Пример

Давайте создадим Future, который завершается ошибкой, и перехватим ее с помощью метода catchError:

void main() { Future<int> future = Future<int>.error('Something went wrong'); future.catchError((Object error) { print('Caught error: $error'); return 0; }); }

Результат выполнения кода:

"Caught error: Something went wrong"

Пример

Давайте создадим Future, который завершается ошибкой, и обработаем ее, вернув новое значение:

void main() { Future<int> future = Future<int>.error('Error occurred'); future.catchError((Object error) { print('Handled: $error'); return 42; }).then((int value) { print('Value: $value'); }); }

Результат выполнения кода:

"Handled: Error occurred" "Value: 42"

Пример

Давайте используем второй параметр test, чтобы обработать только определенные типы ошибок:

void main() { Future<int> future = Future<int>.error('Critical error'); future.catchError( (Object error) { print('Caught: $error'); return 0; }, test: (Object error) => error.toString().contains('Critical') ); }

Результат выполнения кода:

"Caught: Critical error"

Смотрите также

  • класс Future,
    который представляет результат асинхронной операции
  • метод then,
    который обрабатывает успешное завершение Future
  • метод whenComplete,
    который выполняется при завершении Future в любом случае
  • метод error,
    который создает Future с ошибкой
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить