dart:async
庫中runZoned
函數的用法介紹如下。
用法:
R runZoned<R>(
R body(
),
{Map<Object?, Object?>? zoneValues,
ZoneSpecification? zoneSpecification,
@Deprecated("Use runZonedGuarded instead") Function? onError}
)
在自己的區域中運行body
。
基於 zoneSpecification
和 zoneValues
使用 Zone.fork 創建一個新區域,然後在該區域中運行 body
並返回結果。
如果提供了onError
,則它必須具有以下類型之一
void Function(Object)
void Function(Object, StackTrace)
和onError
處理程序用於both
通過覆蓋zoneSpecification
中的 ZoneSpecification.handleUncaughtError 來處理異步錯誤,如果有的話,and
以處理由調用body
同步引發的錯誤。
如果在 body
中同步發生錯誤,則在 onError
處理程序中引發對 runZone
的調用會引發該錯誤,否則對 runZoned
的調用會嘗試返回 null
。
如果區域規範具有handleUncaughtError
值或提供了onError
參數,則區域變為error-zone。
錯誤本身永遠不會跨越error-zone 邊界。嘗試跨越error-zone 邊界的錯誤被視為在其原始錯誤區域中未被捕獲。
var future = Future.value(499);
runZoned(() {
var future2 = future.then((_) { throw "error in first error-zone"; });
runZoned(() {
var future3 = future2.catchError((e) { print("Never reached!"); });
}, onError: (e, s) { print("unused error handler"); });
}, onError: (e, s) { print("catches error of first error-zone."); });
例子:
runZoned(() {
Future(() { throw "asynchronous error"; });
}, onError: (e, s) => print(e)); // Will print "asynchronous error".
可以通過在新區域中重新拋出錯誤來手動將錯誤從一個錯誤區域傳遞到另一個錯誤區域。如果onError
拋出,該錯誤將發生在調用runZoned 的原始區域中。
相關用法
- Dart runZonedGuarded用法及代碼示例
- Dart MapMixin.containsKey用法及代碼示例
- Dart Iterator用法及代碼示例
- Dart AttributeClassSet.intersection用法及代碼示例
- Dart num.sign用法及代碼示例
- Dart TransformList.last用法及代碼示例
- Dart FileList.first用法及代碼示例
- Dart CanvasRenderingContext2D.drawImageScaledFromSource用法及代碼示例
- Dart FileList.length用法及代碼示例
- Dart Iterable.takeWhile用法及代碼示例
- Dart LinkedHashMap用法及代碼示例
- Dart RegExp.pattern用法及代碼示例
- Dart StreamTransformer構造函數用法及代碼示例
- Dart JsArray.removeAt用法及代碼示例
- Dart ListMixin.expand用法及代碼示例
- Dart UriData.parse用法及代碼示例
- Dart Point用法及代碼示例
- Dart Int32x4List.view用法及代碼示例
- Dart Uri.decodeFull用法及代碼示例
- Dart Future用法及代碼示例
- Dart File用法及代碼示例
- Dart ObjectStore.openCursor用法及代碼示例
- Dart Process用法及代碼示例
- Dart Uri.replace用法及代碼示例
- Dart LengthList.first用法及代碼示例
注:本文由純淨天空篩選整理自dart.dev大神的英文原創作品 runZoned<R> function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。