當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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