以前经常遇到APP内部异常情况下的Exception,最初是通过try catch这样的方式处理;但是APP上线后,用户在特地的情况下触发

了某些Exception,当然这些Exception从理论和正常思维上考虑是不可能存在的,查找也就无从下手。、

后来通过实现UncaughtExceptionHandler类来对异常进行捕获,并把日志记录本地,下次打开APP后发送到后台,然后这样的日志

来维护。通过这种方式,虽然可以更友好的给用户提示APP崩溃,然而这种方式只能对主线程进行捕获,非主线程的Exception依然会导致

APP出现卡死、黑屏、停止运行等等的情况,并且通过上传的日志也不能更好的排查错误(-——因为代码混淆,日志根本就记录不到最关键

的代码)。

最近在网上发现了一个方式:使用Cockroach后就可以保证不管怎样抛异常activity都不会闪退,app进程也不会重启(后来贴上代码)。

这种方式明显比上面的好多,起码非主线程的异常也能捕获到,并且就算在APP出现了类似类型强转失败的异常时,也能通过提示框等方式

友好的提示用户,当然对日志的定位还是一样的。Cockroach虽能够捕获到Exception,但出现Exception的地方的后面代码功能一样不会继续往

下执行,因此同样会出现界面显示异常等情况。所以,还是乖乖的注意平时的编码吧。

APP崩溃处理的更多相关文章

  1. 移动App崩溃的测试用例设计

    我们的日常生活中对移动设备越来越多的使用意味着移动App测试这个主题已成为需要考虑的一个无法避免的问题.根据最近的调查研究,用户难以容忍有bug的移动App. 移动App Bug的影响是用户体验差.A ...

  2. 追踪app崩溃率、事件响应链、Run Loop、线程和进程、数据表的优化、动画库、Restful架构、SDWebImage的原理

    1.如何追踪app崩溃率,如何解决线上闪退 当 iOS设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上.crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈 跟踪信 ...

  3. iOS系统app崩溃日志手动符号化

    iOS系统app崩溃日志手动符号化步骤: 1.在桌面建立一个crash文件夹,将symbolicatecrash工具..crash文件..dSYM文件放到该文件夹中 a.如何查询symbolicate ...

  4. 移动App崩溃测试用例设计

    我们的日常生活中对移动设备越来越多的使用意味着移动App测试这个主题已成为需要考虑的一个无法避免的问题.根据最近的调查研究,用户难以容忍有bug的移动App. 移动App Bug的影响是用户体验差.A ...

  5. android app崩溃日志收集以及上传

    源代码获取请到github:https://github.com/DrJia/AndroidLogCollector 已经做成sdk的形式,源代码已公开,源代码看不懂的请自行google. 假设想定制 ...

  6. H5页面长按导致app崩溃问题解决

    每天学习一点点 编程PDF电子书.视频教程免费下载:http://www.shitanlife.com/code 最近用H5页面做了个安卓的项目,但是在H5页面中长按文字内容,会导致APP崩溃掉... ...

  7. 一些通用的触发移动App崩溃的测试场景

    一些通用的触发移动App崩溃的测试场景,如下: 1 验证在有不同的屏幕分辨率,操作系统和运营商的多个设备上的App行为. 2 用新发布的操作系统版本验证App的行为. 3 验证在如隧道,电梯等网络质量 ...

  8. 微信团队分享:iOS版微信是如何防止特殊字符导致的炸群、APP崩溃的?

    本文来自微信开发团队yanyang的技术分享. 1.引言 相信大家都遇到过一段特殊文本可以让iOS设备所有app闪退的经历.前段时间大年初一,又出现某个印度语字符引起iOS11系统奔溃,所幸iOS版微 ...

  9. [原创]App崩溃率统计工具推荐

    [原创]App崩溃率统计工具推荐 1 友盟(推荐) 友盟是一款比较成熟的工具,同时也可以展示留存,日活,事件等. 2 Bugly   腾讯的bugly统计数据也算是比较早的,可惜后续维护比较弱,功能与 ...

随机推荐

  1. Bash Shell 解析路径获取文件名称和文件夹名

    前言 还是今天再写一个自己主动化打包脚本.用到了从路径名中获取最后的文件名称.这里记录一下实现过程. 当然,最后我也会给出官方的做法.(ps:非常囧,实现完了才发现原来Bash Shell有现成的函数 ...

  2. Linux操作服务器的初识

    1,服务器:顾名思义就是提供服务的机器,(超强性能的一台主机, 100G-500G内存) 2,运维自动化 运维人员, 一个人维护上百台服务器 3,CMDB运维资产管理平台 资产收集, 通过web界面, ...

  3. 关于maven pom

    1 maven pom.xml只是配置文件 构建的流程已经固化在maven中了,pom.xml只是对这个流程的配置.特别是插件,在不进行人工绑定的情况下,插件是对应固定的生命周期的,我们操作的时候是操 ...

  4. Linux 对比 Windows 缺点

      SELinux_百度百科 https://baike.baidu.com/item/SELinux/8865268?fr=aladdin   虽然Linux比起 Windows来说,它的可靠性,稳 ...

  5. 加载之ready和onload

    页面加载完成有两种事件,一是ready,表示文档结构已经加载完成(不包含图片等非文字媒体文件),二是onload,指示页面包含图片等文件在内的所有元素都加载完成. 真不知道这个标题该怎么取,暂时就先凑 ...

  6. Goland软件使用教程(二)

    Goland软件使用教程(二)一.编码辅助功能 1.      智能补全 IDE通过自动补全语句来帮助您来编写代码.快捷键“Ctrl+shift+空格”将会给你一个在当前上下文中最相关符号的列表,当您 ...

  7. python ConfigParser模块 配置文件解析

    ConfigParser模块主要是用来解析配置文件的模块,像mysql,或者win下面的ini文件等等 下面我们来解析mysql的配置文件my.cnf my.cnf配置文件内容 [mysqld] da ...

  8. python 面向对象六 类属性和实例属性

    一.实例属性 Python是动态语言,根据类创建的实例可以任意绑定属性. >>> class Student(object): ... def __init__(self, name ...

  9. bzoj 2750: [HAOI2012]Road【spfa+dfs】

    枚举起点做spfa,然后一条边在最短路上的条件是dis[e[i].to]==dis[u]+e[i].va,所以每次spfa完之后,dfs出a[i]表示经过i点的最短路的起点数,b[i]表示经过i点的最 ...

  10. 在gnome3.x中添加eclipse菜单

    ubuntu-gnome 16.04采用gnome3,界面和gnome2有较大区别.对于自己手动解压安装,而非用包管理器安装的程序,需要手工建立应用程序的启动快捷方式.例如,对于eclipse程序,采 ...