Future<T>.error 构造函数

Future<T>.error(
  1. Object error,
  2. [StackTrace? stackTrace]
)

创建一个在出现错误时完成的未来对象。

创建的未来对象将在未来的微小任务中完成错误。这为人提供了足够的时间来为未来对象添加错误处理器。如果未在完成前添加错误处理器,则错误被视为未处理。

使用 Completer 来创建未来对象并在稍后完成。

示例

Future<int> getFuture() {
 return Future.error(Exception('Issue'));
}

final error = await getFuture(); // Throws.

实现

factory Future.error(Object error, [StackTrace? stackTrace]) {
  // TODO(40614): Remove once non-nullability is sound.
  checkNotNullable(error, "error");
  if (!identical(Zone.current, _rootZone)) {
    AsyncError? replacement = Zone.current.errorCallback(error, stackTrace);
    if (replacement != null) {
      error = replacement.error;
      stackTrace = replacement.stackTrace;
    }
  }
  stackTrace ??= AsyncError.defaultStackTrace(error);
  return new _Future<T>.immediateError(error, stackTrace);
}