Flutter日志上报和异常上报

一、只能收集同步报错异常的方式

  FlutterError.onError = (FlutterErrorDetails details) async {
 
    ///这种方式,异步无法打印消息
    // print("${details.exception.toString()}");
    // print("over");
    // print("stack:${details.stack.toString()}");
    // print("stack:over");
  };

二、使用Zone收集,这种同步和异步报错都可以收集,还可以收集日志

FlutterError.onError = (FlutterErrorDetails details) async {
    ///把异常交个Zone处理
    Zone.current.handleUncaughtError(details.exception, details.stack);
  };

  runZonedGuarded(
    () {
      ///flutter程序的入口
      runApp(MyApp());
    },
    (Object obj, StackTrace stack) {
      ///自行自己的上报操作
      ///obj类似于msg的东西
      ///stack是报错的堆栈信息
      reportError(obj, stack);
    },
    ///可以获取所有的print日志信息
    zoneSpecification: ZoneSpecification(
        print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
      parent.print(zone, "line是啥:$line");
    }),
  );

使用直接看上面的注释解释,打完收工。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容