一、只能收集同步报错异常的方式
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");
}),
);
使用直接看上面的注释解释,打完收工。
网友评论