IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Flutter异常统计 -> 正文阅读

[移动开发]Flutter异常统计

本片博客的目的是记录异常的捕获与上传效果的实现过程,现分为两个方面阐述。

  • 异常的捕获
  • 异常的上传

捕获异常

经过测试,,从捕获程度和效果我把flutter的异常分为三种,分别是Framework异常,Dart异常 和 Engine异常。

Framework异常

可以把它理解为flutter调试时出现的默认的红屏页面,如果在release版本下是一张灰屏。如下面这些情况就会出现这种异常:

class _MyHomePageState extends State<MyHomePage> {
  List list;

  @override
  Widget build(BuildContext context) {
    /***************** Framework异常触发 *****************/
    list.add('value');
    // List<String> numList = ['1', '2'];
    // print(numList[5]);
    // throw StateError('throw a StateError');
    
     return Scaffold(
      appBar: AppBar(
        title: Text('FlutterCrashReport'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => _triggerException(),
        child: Icon(
          Icons.add,
          color: Colors.white,
          size: 50,
        ),
      ),
      body: Center(
        child: Text('点击+号触发异常'),
      ),
    );

该异常的捕获方式有下面两种:

//只能捕获Framework异常,并自定义Framework错误提示页面(替换掉系统默认红背景的页面)
  ErrorWidget.builder = (FlutterErrorDetails flutterErrorDetails) {
    print('This is a Framework exception');
    return Scaffold(
      appBar: AppBar(
        title: Text('FlutterCrashReport'),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () => _triggerException(),
        child: Icon(
          Icons.add,
          color: Colors.white,
          size: 50,
        ),
      ),
      body: SingleChildScrollView(
        child: Column(
          children: [
            Text(flutterErrorDetails.exception.toString()),
            Text('----------------------'),
            Text(flutterErrorDetails.stack.toString()),
          ],
        ),
      ),
    );
  };
  //Framework/Dart异常都能捕捉到,如空指针,数组越界,throw,
  //注:除0异常不会被捕获,也不报错
  FlutterError.onError = (FlutterErrorDetails details) async {
    print('This is a Framework or Dart exception-(kDebugMode:$kDebugMode)');
    if (kDebugMode) {
      //debug环境直接控制台输出
      FlutterError.dumpErrorToConsole(details);
    } else {
      //线上环境需要上报
      Zone.current.handleUncaughtError(details.exception, details.stack);
    }
  };
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-22 13:39:10  更:2021-08-22 13:41:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:53:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码