Flutter 核心技术与实战
陈航
前美团点评高级技术专家
42432 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
Flutter 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

39 | 线上出现问题,该如何做好异常捕获与信息采集?

Future提供的catchError语句捕获
try-catch机制捕获
并发Isolate的异常的拦截
扩展_reportError和自定义错误提示页面的实现
数据上报
异常捕获
Android与iOS的配置工作
Bugly SDK的实现版本
Bugly SDK的实现版本
Bugly的数据上报接口
Bugly的数据上报功能
第三方SDK服务厂商
FlutterError类的onError属性
ErrorWidget.builder方法
Flutter框架引发的异常
Zone.runZoned方法
异步异常
同步异常
Dart程序不强制要求处理异常
与Java类似的try-catch机制
Dart代码运行时意外发生的错误事件
思考题
总结
应用工程配置
Android接口实现
iOS接口实现
Dart接口实现
异常上报
Framework异常的捕获方式
App异常的捕获方式
Flutter异常
线上出现问题,该如何做好异常捕获与信息采集

该思维导图由 AI 生成,仅供参考

你好,我是陈航。
在上一篇文章中,我与你分享了如何为一个 Flutter 工程编写自动化测试用例。设计一个测试用例的基本步骤可以分为 3 步,即定义、执行和验证,而 Flutter 提供的单元测试和 UI 测试框架则可以帮助我们简化这些步骤。
其中,通过单元测试,我们可以很方便地验证单个函数、方法或类的行为,还可以利用 mockito 定制外部依赖返回任意数据,从而让测试更可控;而 UI 测试则提供了与 Widget 交互的能力,我们可以模仿用户行为,对应用进行相应的交互操作,确认其功能是否符合预期。
通过自动化测试,我们可以把重复的人工操作变成自动化的验证步骤,从而在开发阶段更及时地发现问题。但终端设备的碎片化,使得我们终究无法在应用开发期就完全模拟出真实用户的运行环境。所以,无论我们的应用写得多么完美、测试得多么全面,总是无法完全避免线上的异常问题。
这些异常,可能是因为不充分的机型适配、用户糟糕的网络状况;也可能是因为 Flutter 框架自身的 Bug,甚至是操作系统底层的问题。这些异常一旦发生,Flutter 应用会无法响应用户的交互事件,轻则报错,重则功能无法使用甚至闪退,这对用户来说都相当不友好,是开发者最不愿意看到的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了在Flutter应用开发中异常捕获与信息采集的重要性和方法。作者首先详细讲解了Flutter异常的概念,包括App异常和Framework异常,并提出了针对这些异常的捕获方式。针对App异常,作者介绍了同步异常和异步异常的捕获方式,以及使用Zone.runZoned方法集中管理异常的方法。对于Framework异常,作者介绍了自定义错误页面和FlutterError类的使用,以及如何统一处理框架异常。此外,文章还提到了异常上报的重要性,并以Bugly为例,介绍了如何实现自定义数据上报。文章还介绍了在Flutter应用中接入Bugly数据上报的具体步骤,包括Dart层接口实现、iOS接口实现和Android接口实现。通过对Bugly SDK的接口封装和权限配置,为读者提供了在Flutter应用中进行异常信息上报的详细指导。总的来说,本文内容涵盖了技术实现细节,对于开发者在实际应用开发中具有一定的指导意义。文章内容丰富,涵盖了异常捕获与信息采集的全面内容,对于开发者在应用开发过程中遇到异常问题时提供了解决思路和方法。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 回眸~
    public class MainActivityFlutterTest extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); View flutterView = Flutter.createView(MainActivityFlutterTest.this, getLifecycle(), "route1"); setContentView(flutterView); } }老师,请问下如果用这种方式在原生中添加flutterview ,那么可以在这个原生actiivty中设置mehodChannel 吗 ,貌似MethodChannel 需要BinaryMessenger,这个怎么设置呀

    作者回复: 你可以参考30篇分享的示例代码:https://github.com/cyndibaby905/27_native_view

    2019-11-07
    2
  • 浣熊特工队
    老师,我参考您github上的代码后,在json转换出现 type 'int' is not a subtype of type 'double' 这个类型的异常时,发现FlutterError.onError回调和runZoned的onError都不执行啊,到是进了自定义的错误界面

    作者回复: 检查一下其他的异常是否可以捕获

    2019-10-30
    2
  • Carlo
    老师,我使用了Firebase Crashlytics。(通过官方插件firebase_crashlytics)但是得倒的crash stack trace根本没有用啊。(只能知道是点击ink_well 造成了crash,但是没告诉是哪个file,哪行代码) Crashlytics.crash (firebase_crashlytics.dart:50) _InkResponseState._handleTap (ink_well.dart:635) _InkResponseState.build.<fn> (ink_well.dart:711) GestureRecognizer.invokeCallback (recognizer.dart:182) TapGestureRecognizer._checkUp (tap.dart:365) TapGestureRecognizer.handlePrimaryPointer (tap.dart:275) PrimaryPointerGestureRecognizer.handleEvent (recognizer.dart:455) PointerRouter._dispatch (pointer_router.dart:75) PointerRouter.route (pointer_router.dart:102) _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (binding.dart:218) _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (binding.dart:198)

    作者回复: 1.看起来是手势处理出现了冲突,可以重点检查这部分的代码 2.你这个异常堆栈是Dart的,Dart的异常是不会Crash的

    2019-10-04
  • 亡命之徒
    老师 ,想问下 flutter 开发web页面可以怎么做嘛

    作者回复: 参考这篇文章:https://mp.weixin.qq.com/s/krR2XsDXvakMlZWbV-VvSg

    2019-09-27
  • wtsky 。
    老师,checkbox等类型控件,必须和statefulwidget setState方法配合使用吗

    作者回复: 对,这个widget本身没有状态,需要调用方自己维护

    2019-09-26
  • 刘超
    FlutterError.onError 这个回调,只有在release模式下,才会生效,具体可看.https://github.com/flutter/flutter/issues/48972
    2020-05-25
    4
  • IF-Processing
    我看咱们的示例代码中,在初始化appid时,把id放入代码里了,这样每次修改都需要修改代码,提交以及编译。flutter有没有类似配置文件的机制呢?如果没有,做一个类似Config的类,根据不同的目标环境,使用不同的配置文件,这样是否可行,有啥坑没有?
    2020-02-06
    1
    3
  • 甘陵笑笑生
    文字中“在完成了极光 Android SDK 的接口封装和权限配置之后”,应该是“完成了Bugly.....”
    2020-03-28
    1
  • 火腿
    Flutter在视频播放这块有没有好的解决方案? 最近去找了一些Flutter Texture的资料,感觉效率上会比Native的差很多。
    2019-12-26
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部