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


Dart Stream.handleError用法及代码示例


dart:async 库中Stream.handleError 方法的用法介绍如下。

用法:

Stream<T> handleError(
   Function onError,    
   {bool test(
   dynamic error   
)?}   
)

创建一个包装器 Stream 来拦截来自该流的一些错误。

如果此流发送与 test 匹配的错误,则它会被 onError 函数拦截。

onError 回调必须是 void Function(Object error)void Function(Object error, StackTrace) 类型。函数类型确定是否使用堆栈跟踪参数调用onError。如果此流在没有堆栈跟踪的情况下收到错误,则堆栈跟踪参数可能是StackTrace.empty

如果 test(error) 返回 true,则测试函数匹配异步错误 error。如果省略test,则认为每个错误都匹配。

如果错误被拦截,onError 函数可以决定如何处理它。如果它想引发一个新的(或相同的)错误,它可以抛出,或者简单地返回以使这个流忘记错误。如果接收到的 error 值被 onError 函数再次抛出,它的行为就像 rethrow 并与其原始堆栈跟踪一起发出,而不是 onError 内的 throw 的堆栈跟踪。

如果您需要将错误转换为数据事件,请使用更通用的Stream.transform 通过将数据事件写入输出接收器来处理事件。

如果此流是,则返回的流是广播流。如果多次收听广播流,则每个订阅将单独执行test 并处理错误。

例子:

Stream.periodic(const Duration(seconds: 1), (count) {
  if (count == 2) {
    throw Exception('Exceptional event');
  }
  return count;
}).take(4).handleError(print).forEach(print);

// Outputs:
// 0
// 1
// Exception: Exceptional event
// 3
// 4

相关用法


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