Android 崩溃处理

Android 崩溃的那些事儿

转载: https://kaiwu.lagou.com/course/courseInfo.htm?courseId=67#/detail/pc?id=1879

总结:

如果要给 crash 日志进行分类,可以分成 2 大类:JVM 异常(Exception)堆栈信息、native 代码崩溃日志。

JVM 异常堆栈信息

Java 中异常(Exception)分两种:检查异常 checked Exception 和非检查异常 unchecked Exception

所谓检查异常就是在代码编译时期,Android Studio 就会提示代码有错误,无法通过编译,比如 IOException。如果我们没有在代码中将这些异常 catch,而是直接抛出,最终也有可能导致程序崩溃。

非检查异常包括 error 和运行时异常(RuntimeException),AS 并不会在编译时期提示这些异常信息,而是在程序运行时期因为代码错误而直接导致程序崩溃,比如 OOM 或者空指针异常(NPE)。

Java 异常

1.UncaughtExceptionHandler:对于上述两种异常我们都可以使用 UncaughtExceptionHandler 来进行捕获操作,它是 Thread 的一个内部接口。

2.自定义异常处理类:自定义类实现 UncaughtExceptionHandler 接口,并实现 uncaughtException 方法。

native 异常

1.当程序中的 native 代码发生崩溃时,系统会在 /data/tombstones/ 目录下保存一份详细的崩溃日志信息。如果一个 native crash 是必现的,不妨在模拟器上重现 bug,并将 /data/tombstones 中的崩溃日志拉到本地电脑中加以分析。

2.目前比较成熟,使用也比较广泛的就是谷歌的 BreakPad。Breakpad 是一个跨平台的开源库,我们也可以在其 Breakpad Github 上下载自己编译。并通过 JNI 的方式引入到项目中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值