当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Dart Future.catchError用法及代码示例


dart:async 库中Future.catchError 方法的用法介绍如下。

用法:

Future<T> catchError(
   Function onError,    
   {bool test(
   Object error   
)?}   
)

处理由此 Future 发出的错误。

这是"catch" 块的异步等效项。

返回一个新的 Future,它将使用这个未来的结果或调用 onError 回调的结果来完成。

如果这个未来以一个值结束,则返回的未来以相同的值结束。

如果这个future 以错误结束,则首先使用错误值调用test

如果 test 返回 false,则此 catchError 不会处理异常,并且返回的 future 完成时会出现与此 future 相同的错误和堆栈跟踪。

如果 test 返回 true ,则调用 onError 并带有错误和可能的堆栈跟踪,并且返回的 future 以与 thenonError 完全相同的方式完成此调用的结果。

如果省略 test,则默认为始终返回 true 的函数。 test 函数不应抛出,但如果抛出,则将其处理为如同 onError 函数已抛出。

请注意,在添加侦听器之前,期货不会延迟报告错误。如果第一个 catchError (或 then )调用发生在此未来完成并出现错误之后,则该错误将报告为未处理的错误。请参阅 Future 上的说明。

例子:

Future.delayed(
  const Duration(seconds: 1),
  () => throw 401,
).then((value) {
  throw 'Unreachable';
}).catchError((err) {
  print('Error: $err'); // Prints 401.
}, test: (error) {
  return error is int && error >= 400;
});

相关用法


注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 catchError method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。