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


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