flutter 全局异常捕获
flutter 全局异常捕获
来源:网络
更新时间:不详
dart开发中,try-catch使用方式:
//捕获同步异常
try {
...
} catch (e) {
print("try-catch error : $e");
}
//捕获异步异常
Future.error("error").catchError((e) {
print("try-catch error : $e");
});
我们使用如上方式,在关键代码处对Flutter进行异常捕获。不过,还有部分异常是在我们没有考虑到的场景下发生的,这些我们没有做埋点处理的异常如何捕获呢?
直接给出异常捕获模板:
void main() {
void reportErrorAndLog(FlutterErrorDetails details) {
final errorMsg = {
"exception": details.exceptionAsString(),
"stackTrace": details.stack.toString(),
};
print("reportErrorAndLog : $errorMsg");
...//上报错误
}
FlutterErrorDetails makeDetails(Object error, StackTrace stackTrace) {
// 构建错误信息
return FlutterErrorDetails(stack: stackTrace, exception: error);
}
FlutterError.onError = (FlutterErrorDetails details) {
//获取 widget build 过程中出现的异常错误
reportErrorAndLog(details);
};
runZonedGuarded(
() {
runApp(MyApp());
},
(error, stackTrace) {
//没被我们catch的异常
reportErrorAndLog(makeDetails(error, stackTrace));
},
);
}
关键点说明:
runZonedGuarded函数给执行对象制定了一个zone,zone 可理解是一个代码执行沙箱,它能捕获所有未处理的异常(包括同步与异步异常)。
FlutterError.onError是一个静态函数,可捕获Widget在build阶段发生的错误异常,我们对其进行重写,把异常信息进行上报处理。

最新更新
更多>>- 游戏之旅-我的编程感悟
- 信号与系统
- 嵌入式 Linux入门笔记
- 用PHOTOSHOP抠图并不难快速抠图的万用妙法什么图都能搞定
- 数据库系统概念中文版
- 自动控制原理
- Essential C++中文版
- 鸟哥的Linux私房菜服务器架设篇第三版
- VBA入门指南
- Windows游戏编程大师技巧第二版
- 剖析会议话筒的电路
- 松本行弘的程序世界
- 影视后期特效合成:AFTER EFFECTS CS4中文版
- 系统架构设计师教程
- Linux系统管理技术手册第二版
- UNIX&LINUX大学教程
- Linux与unix shell编程指南
- 零起步轻松学欧姆龙PLC技术
- 超越CSS:Web设计艺术精髓
- 通信专业实务:传输与接入
- 从零开始学电子元器件识别与检测技术
- JAVASCRIPT RIA开发实战 最佳实践、性能、表现
- 瞬间之美WEB界面设计如何让用户心动
- HTML5 Canvas游戏开发实战
- android应用开发揭秘
- 汇编语言教程
- 我想跟你走
- C++入门经典第4版
- Neo4j权威指南
- Hadoop权威指南第四版
- [啊哈!算法].啊哈磊.扫描版
- 编译原理及实践
- 电子商务系统建设与管理
- 工程电路分析第8版
- 计算机组成原理白中英
- 计算机组成原理唐朔飞
- 人工智能基础高中版
- 深入理解Linux内核第三版
- 数字通信第四版
- 数字信号处理
- 数字集成电路、系统与设计第二版
- Oracle大全
- 深入理解Android内核设计思想
- 计算机网络第7版
- C++程序设计语言第4版第1~3部分
- 模拟电子技术基础第五版
- SEO高级网站数据分析提升网站排名
- excel数据分析教程
- HTML5触摸界面设计与开发
- 计算机辅助设计与制造
声明:本网站所资源均通过互联网收录,并提供大家免费下载阅读,如果本站有侵犯权利人版权内容的请向本站投诉。
投诉邮箱:577982958@qq.com 一经核实,本站将立即删除相关收录作品。
© 2020 - 2021 qianherenli.com 版权所有