Метод handleError
Stream<T> handleError(Создаёт обернутый Stream, который перехватывает некоторые ошибки из этого потока.
Если этот поток отправляет ошибку, которая соответствует test, то она перехватывается функцией onError.
Обратный вызов onError должен быть типа void onError(error) или void onError(error, StackTrace stackTrace). В зависимости от типа функции, поток либо вызывает onError с или без стека вызовов. Аргумент стека вызовов может быть null, если сам поток получил ошибку без стека вызовов.
Асинхронная ошибка error сопоставляется с функцией проверки, если test(error) возвращает true. Если test опущена, то все ошибки считаются соответствующими.
Если ошибка перехватывается, функция onError может принять решение, что с ней делать. Она может выбросить исключение, если хочет поднять новую (или ту же) ошибку, или просто вернуть значение, чтобы поток забыл об ошибке.
Если вам нужно преобразовать ошибку в событие данных, используйте более общий метод Stream.transform для обработки события путём записи события данных в выходной поток.
Возвращаемый поток является потоком с широковещательной рассылкой, если таковым является этот поток. Если за потоком с широковещательной рассылкой подписываются несколько раз, каждая подписка индивидуально выполнит test и обработает ошибку.
Исходный код
Stream<T> handleError(Function onError, {bool test(error)}) {
return new _HandleErrorStream<T>(this, onError, test);
}
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Stream/handleError.html