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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。