Android 全局捕获异常信息

2018-05-23  本文已影响53人  好名字都已经让人起了

都遇到过APP使用崩溃的情况,尤其是在线上的崩溃,我们无法看到崩溃信息,此时就需要对崩溃信息进行收集。之前用的都是第三方的来进行,最近项目中需要自己来实现此功能。

其实Google已经为我们提供了全局捕获异常机制:UncaughtExceptionHandler。

UncaughtExceptionHandler 是Thread类中定义的一个接口,Android中程默认实现了该接口来处理异常信息并退出。


自定义捕获异常

如果我们需要自己捕获并处理异常信息,思路就是 UncaughtExceptionHandler 接口,并将其加入到对应的Thread中,示例代码如下:

//获取系统默认的处理类实例
Thread.UncaughtExceptionHandler oldHandler = Thread.getDefaultUncaughtExceptionHandler();

//定义自己的错误信息处理类
Thread.UncaughtExceptionHandler handler = new Thread.UncaughtExceptionHandler() {

            @Override
            public void uncaughtException(Thread t, Throwable e) {
                //当有异常信息时,需要在这里进行处理,

                if (oldHandler != null) {
                    oldHandler.uncaughtException(t,e);//  1
                }
            }
        };

 //设置为默认的处理信息
 Thread.setDefaultUncaughtExceptionHandler(handler);

通过以上代码便可获取到全局的异常信息,可在uncaughtException方法中对错误信息进行保存等操作。


错误处理

建议:一般在项目中报错后会弹出错误提示并退出,退出时可以调用Application的onTerminate方法来实现程序关闭。这样程序再次启动时也不会有任何问题。当然也可以关闭后重新打开APP。


渣渣一枚,以上如有错误,请各位大神指正(抱拳)。

上一篇 下一篇

猜你喜欢

热点阅读