未捕获的异常导致crash
来源:互联网 发布:mac ppt使用教程 编辑:程序博客网 时间:2024/05/16 18:52
通常我们在可以预见的可能出现异常的手动调用try catch来捕获代码片中的异常,防止app直接崩溃,或者即使没有try catch,通常崩溃以后,日志里会打出具体的异常信息,并提示具体在哪一个类,哪一行出现错
但博主之前遇到的问题就不在此类范围之内,app直接崩溃,并且没有明显的异常信息,且看error信息
提示Channel is unrecoverably broken and will be disposed!,上stackoverflow上搜索关键词,找不到答案,当然不能死心,在反复的crash后(在不知道原因的时候简直迷之bug,同样的操作,有时候这样的日志,有时候那样的日志),终于找到了有用的信息
切换到Verbose级别的日志,看到了thread exiting with uncaught exception,翻译过来就是线程未捕获到的异常,正好对应了每次crash以后,进程就挂了,那么为什么是未捕获到的异常,我非要去捕获他!知道是什么异常才知道怎么去解决
一番搜索过后,找到了出现此类问题以后,极有可能是“线程池中,线程池在执行任务时捕获了所有异常,这样一来线程中所有的异常都无法捕获到抛出的异常”。
很庆幸,android给我们提供了去捕获这类异常的接口,如下图
我这是让BaseActivity去实现了UncaughtExceptionHandler这个接口,并重写uncaughtException这个方法,最后在oncreat去调用如上的所示的方法,这样就可以捕获到异常了。
那么重新让程序crash以后,打印出了以下日志
Only the original thread that created a view hierarchy can touch its views
意思是我在子线程去更新了UI,众所周知更新UI的操作要放在主线程去执行,知道异常以后,结合在什么地方崩溃,就可以极大的缩小问题出现的可能范围
PS:最后是我之前代码里的迷之操作,在子线程里里写了adapter.notifyDataSetChanged()这个方法,会让adapter去刷新view(拍胸脯保证,我都不知道当时为啥加了这句 )
- 未捕获的异常导致crash
- iOS收集未捕获的异常,防止应用crash
- android开发技巧-记录未捕获的crash异常日志
- Android 未捕获异常crash崩溃日志的截取
- 未捕获的异常
- 捕获程序中未捕获的异常
- 如何捕获未捕获的异常
- [Android]如何捕获未捕获的异常
- 未捕获异常的处理
- 未捕获的异常 'NSInternalInconsistencyException'
- C++ 未捕获的异常
- [java异常]异常未捕获时导致请求循环发送
- Android UncaughtExceptionHandler捕获crash的全局异常
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- GWT 类的未捕获异常例子
- 堆排序
- Mysql之备份还原
- String、stringBuilder、stringBuffer的区别
- Java中char 字符类型的独特性
- 回顾数据结构(3):双向链表
- 未捕获的异常导致crash
- 2016/11/4
- Android中web view截取H5的点击事件
- R语言学习笔记(6)(循环)
- 用二叉树、栈的知识实现一个简单计算器
- 欢迎使用CSDN-markdown编辑器
- Hadoop 的Writable序列化接口
- 8.2接收和发送条短信
- 冒泡排序