Future<T>.error 构造函数

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

创建一个完成时带有错误的 Future。

创建的 Future 将在未来微任务中完成错误。这为有人添加错误处理程序在 Future 上提供了足够的时间。如果在 Future 完成之前没有添加错误处理程序,则错误将被视为未处理的。

使用 Completer 创建 Future 并稍后完成。

示例

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);
}