Метод addError
Метод addError класса StreamController
добавляет ошибку в поток. Первым параметром
метод принимает объект ошибки, который будет
передан слушателям. Вторым необязательным
параметром можно передать стек вызовов
(StackTrace), связанный с этой ошибкой.
После вызова этого метода все подписчики потока
получат событие ошибки.
Синтаксис
controller.addError(error, [stackTrace])
Пример
Давайте создадим контроллер, подпишемся на его
поток и добавим ошибку с помощью метода
addError:
import 'dart:async';
void main()
{
StreamController controller = StreamController();
controller.stream.listen(
(data) => print('Data: $data'),
onError: (error) => print('Error: $error'),
);
controller.addError('Something went wrong');
controller.close();
}
Результат выполнения кода:
"Error: Something went wrong"
Пример
Давайте передадим в метод addError также
и объект StackTrace, чтобы слушатель мог
получить информацию о месте возникновения ошибки:
import 'dart:async';
void main()
{
StreamController controller = StreamController();
controller.stream.listen(
(data) => print('Data: $data'),
onError: (error, stackTrace) {
print('Error: $error');
print('Stack trace available: ${stackTrace != null}');
},
);
try {
throw Exception('Custom error');
} catch (e, s) {
controller.addError(e, s);
}
controller.close();
}
Результат выполнения кода:
"Error: Exception: Custom error"
"Stack trace available: true"
Смотрите также
-
класс
StreamController,
который управляет потоком -
метод
add,
который добавляет данные в поток -
метод
close,
который закрывает поток -
свойство
stream,
которое возвращает поток контроллера