原文在sparkyuan.me上,转载注明出处:http://sparkyuan.github.io/2016/03/28/使用UncaughtExceptionHandler来处理未捕获的异常/
所有的App都会发生crash,本文讲解的是如何采集crash信息以供后续开发处理这类问题。
基本思路
当crash发生时,系统会调用UncaughtExceptionHandler的uncaughtException方法,我们可以在这个方法中捕获异常信息,把异常信息存到SD卡中,在合适的时候通过网络把crash信息传回服务器,这样就可以分析crash原因,在后续的版本中解决。
先看一下Thread类中的一个方法,setDefaultUncaughtExceptionHandler
public static void setDefaultUncaughtExceptionHandler(UncaughtExceptionHandler handler) {
Thread.defaultUncaughtHandler = handler;
}
defaultUncaughtHandler是Thread类的静态成员变量,所以如果我们将自定义的UncaughtExceptionHandler设置给Thread的话,那么当前进程内的所有线程都能使用这个UncaughtExceptionHandler来处理异常了。
CrashHandler
public class CrashHandler implements UncaughtExceptionHandler {
private static final String TAG = "CrashHandler";
private static final boolean DEBUG = true;