Future<T>.error 构造函数
- Object error,
- [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);
}