Spec-Zone.ru › Dart 2

dart:isolate

Свойство errors

Stream 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API