Свойство errors
Возвращает разделяемую (broadcast) стрим необработанных ошибок из изолированного процесса.
Каждая ошибка предоставляется как событие об ошибке в стриме.
Фактический объект ошибки и стек отслеживания не обязательно будут иметь те же типы объектов, что и в реальном изолированном процессе, но они всегда будут иметь тот же результат Object.toString.
Этот стрим основан на addErrorListener и removeErrorListener.
Реализация
Stream get errors {
StreamController controller = StreamController.broadcast(sync: true);
RawReceivePort? port;
void handleError(Object? message) {
var listMessage = message as List<Object?>;
var errorDescription = listMessage[0] as String;
var stackDescription = listMessage[1] as String;
var error = RemoteError(errorDescription, stackDescription);
controller.addError(error, error.stackTrace);
}
controller.onListen = () {
RawReceivePort receivePort = RawReceivePort(handleError);
port = receivePort;
this.addErrorListener(receivePort.sendPort);
};
controller.onCancel = () {
var listenPort = port!;
port = null;
this.removeErrorListener(listenPort.sendPort);
listenPort.close();
};
return controller.stream;
}
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-isolate/Isolate/errors.html