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 Stream.fromFutures用法及代码示例
- Dart Stream.fold用法及代码示例
- Dart Stream.map用法及代码示例
- Dart Stream.asBroadcastStream用法及代码示例
- Dart Stream.where用法及代码示例
- Dart Stream.reduce用法及代码示例
- Dart Stream.join用法及代码示例
- Dart Stream.error用法及代码示例
- Dart Stream.periodic用法及代码示例
- Dart Stream.take用法及代码示例
- Dart Stream.every用法及代码示例
- Dart Stream.lastWhere用法及代码示例
- Dart Stream.contains用法及代码示例
- Dart Stream.eventTransformed用法及代码示例
- Dart Stream.firstWhere用法及代码示例
- Dart Stream.drain用法及代码示例
- Dart Stream.empty用法及代码示例
- Dart Stream.multi用法及代码示例
- Dart Stream.distinct用法及代码示例
- Dart Stream.timeout用法及代码示例
- Dart Stream.transform用法及代码示例
- Dart Stream.singleWhere用法及代码示例
- Dart Stream.fromFuture用法及代码示例
- Dart Stream.skipWhile用法及代码示例
- Dart Stream.skip用法及代码示例
注:本文由纯净天空筛选整理自dart.dev大神的英文原创作品 handleError method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。