runGuarded<T> method

  1. @override
void runGuarded<T>(
  1. ValueGetter<T> body, {
  2. FlutterExceptionHandler? onException,
  3. String? filterPattern,
  4. bool reportInDebugMode = false,
})
override

异常上报。该方法等同于 runZonedGuarded。

body 运行的内容。 onException 自定义异常处理,可用于异常打印、双上报等定制逻辑。该字段不影响上报。 filterPattern 针对 message 正则过滤异常上报,命中则不上报。 reportInDebugMode 是否在调试模式也上报。

全局异常捕获回调(FlutterError.onError 与 PlatformDispatcher.onError) 仅在首次调用时安装,重复调用不会重复注册;安装前已存在的回调会被链式保留。

Implementation

@override
void runGuarded<T>(
  ValueGetter<T> body, {
  FlutterExceptionHandler? onException,
  String? filterPattern,
  bool reportInDebugMode = false,
}) {
  if (_isSupportPlatform) {
    final _ExceptionFilter filter = (
      onException: onException,
      filterPattern: filterPattern,
      reportInDebugMode: reportInDebugMode,
    );
    _installErrorHandlers(filter);
    runZonedGuarded<T>(
      body,
      (Object error, StackTrace stackTrace) =>
          _handleException(FlutterErrorDetails(exception: error, stack: stackTrace), filter),
    );
  } else {
    body.call();
  }
}