【问题标题】:Exception thrown by async function is intercepted by crashlytics异步函数抛出的异常被 crashlytics 拦截
【发布时间】:2022-08-04 19:58:30
【问题描述】:

我有以下功能:

class CannotOpenMapException implements Exception {}

void launchMap(String address) async {
  …
  throw CannotOpenMapException();
}

然后在 onTap 处理程序中:

try {
  launchMap(my_address);
} on CannotOpenMapException {
  print(\'caught exception!\');
}

事情是,异常没有被捕获,print 语句永远不会被执行。

我认为问题在于我启动 Crashlytics 的方式:

runZonedGuarded<Future<void>>(() async {
  FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;
  …
  runApp(const MyApp());
}

有没有办法让 Crashlytics 只捕获我没有捕获的异常?

    标签: flutter dart exception crashlytics


    【解决方案1】:

    你应该使用runZoneGuarder的第二个参数“onError”,这样只有你没有捕获的异常被拦截。

    runZonedGuarded<Future<void>>(() async {
        WidgetsFlutterBinding.ensureInitialized();
        ... and stuff
    
        runApp(const MyApp());
      }, (error, stack) {
        FirebaseCrashlytics.instance.recordError(error, stack);
      });
    

    文档: https://api.flutter.dev/flutter/dart-async/runZonedGuarded.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-29
      • 2015-08-31
      • 1970-01-01
      • 2018-05-13
      • 1970-01-01
      • 2012-07-05
      • 2017-08-13
      • 2019-08-06
      相关资源
      最近更新 更多