Конструктор error
Конструктор error класса Stream создает
поток, который сразу же после подписки отправляет
событие с ошибкой и завершается. В первый параметр
мы передаем объект ошибки, который будет передан
слушателю. Во второй необязательный параметр
мы можем передать трассировку стека (объект
StackTrace), которая также будет
доступна в обработчике ошибки.
Синтаксис
Stream.error(error, [stackTrace])
Пример
Давайте создадим поток с ошибкой и подпишемся на него, чтобы увидеть, как обрабатывается событие ошибки:
void main()
{
Stream stream = Stream.error('Something went wrong');
stream.listen(
(data) {
print('Data: $data');
},
onError: (error) {
print('Error: $error');
},
onDone: () {
print('Stream is done');
}
);
}
Результат выполнения кода:
"Error: Something went wrong"
"Stream is done"
Пример
Давайте передадим в конструктор не только ошибку, но и трассировку стека, чтобы получить более подробную информацию:
void main()
{
try {
throw Exception('Test exception');
} catch (e, stackTrace) {
Stream stream = Stream.error(e, stackTrace);
stream.listen(
(data) {
print('Data: $data');
},
onError: (error, stack) {
print('Error: $error');
print('Stack trace available: ${stack != null}');
}
);
}
}
Результат выполнения кода:
"Error: Exception: Test exception"
"Stack trace available: true"
Смотрите также
-
класс
Stream,
который представляет собой поток асинхронных событий -
метод
listen,
который подписывается на события потока -
метод
handleError,
который обрабатывает ошибки в потоке -
метод
addError,
который добавляет ошибку в контроллер потока