completeError 抽象方法

void completeError(
  1. Object error,
  2. [StackTrace? stackTrace]
)

通过错误完成 future

调用 completecompleteError 只能最多执行一次。

通过错误完成 future 表示在尝试产生值时抛出了异常。

如果 errorFuture,则使用 future 本身作为错误值。如果想要用 future 的结果完成,可以使用

thisCompleter.complete(theFuture)

或者如果你只想处理 future 中的错误

theFuture.catchError(thisCompleter.completeError);

在调用 completeError) 或 error 之前,future 必须安装错误处理器,否则 error 将被视为未捕获的错误。

void doStuff() {
  // Outputs a message like:
  // Uncaught Error: Assertion failed: "future not consumed"
  Completer().completeError(AssertionError('future not consumed'));
}

您可以通过 Future.catchErrorFuture.thenawait 操作安装错误处理器。

void doStuff() {
  final c = Completer();
  c.future.catchError((e) {
    // Handle the error.
  });
  c.completeError(AssertionError('future not consumed'));
}

有关未捕获错误的详细信息,请参阅 Zones 文章

实现

void completeError(Object error, [StackTrace? stackTrace]);