Flutter 框架可以捕获运行期间的错误,包括构建期间、布局期间和绘制期间。
- 所有 Flutter 的错误均会被回调方法
FlutterError.onError
捕获。 - dart层的异常可以使用
runZonedGuarded
。 - 原生的崩溃分析可以使用
flutter_bugly
插件。 - 特定代码异常捕获使用
try{...}catch(e){...}
当构建期间发生错误时,回调函数 ErrorWidget.builder
会被调用,来生成一个新的 widget,用来代替构建失败的 widget。
- debug 模式下会显示一个红色背景的错误页面
- release 模式下会展示一个灰色背景的空白页面
import 'dart:async';
void main() {
// 捕获 Flutter 框架中的异常
FlutterError.onError = (FlutterErrorDetails details) {
FlutterError.dumpErrorToConsole(details);
// 在此处添加自定义日志记录逻辑,例如发送到远程日志服务器
print('Caught by FlutterError.onError: ${details.exception}');
};
// 捕获 Dart 异常
runZonedGuarded<Future<void>>(() async {
runApp(MyApp());
}, (Object error, StackTrace stack) {
// 在此处添加自定义日志记录逻辑,例如发送到远程日志服务器
print('Caught by runZonedGuarded: $error');
print('Stack trace: $stack');
});
}
网友评论