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

Метод handleError

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

Синтаксис

Stream<T> handleError(Function onError, {bool test(dynamic error)?, void onDone()?})

Пример

Давайте создадим поток с ошибкой и обработаем её с помощью метода handleError:

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); controller.stream .handleError((error) { print('Error: $error'); }) .listen((value) { print('Value: $value'); }); controller.add(1); controller.add(2); controller.addError('Something went wrong'); controller.add(3); controller.close(); }

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

"Value: 1" "Value: 2" "Error: Something went wrong" "Value: 3"

Пример

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

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); controller.stream .handleError( (error) { print('Handled: $error'); }, test: (error) => error is String ) .listen( (value) { print('Value: $value'); }, onError: (error) { print('Unhandled: $error'); } ); controller.add(1); controller.addError('String error'); controller.addError(42); controller.close(); }

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

"Value: 1" "Handled: String error" "Unhandled: 42"

Пример

Давайте используем параметр onDone для выполнения действия при завершении потока:

import 'dart:async'; void main() { StreamController<int> controller = StreamController<int>(); controller.stream .handleError( (error) { print('Error: $error'); }, onDone: () { print('Stream is done'); } ) .listen((value) { print('Value: $value'); }); controller.add(1); controller.addError('Oops'); controller.close(); }

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

"Value: 1" "Error: Oops" "Stream is done"

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

  • класс Stream,
    который представляет поток данных
  • метод listen,
    который подписывается на поток
  • метод map,
    который преобразует элементы потока
  • метод where,
    который фильтрует элементы потока
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить