您的位置:首页 > 移动开发 > Android开发

Android用UncaughtExceptionHandler捕获全局异常

2017-05-27 17:42 369 查看
我们平时测试app的时候总避免不了崩溃的情况,平时调试需要日志也就算了,但是如果公司人手比较少,测试的时候不能完全测试出bug,等上线了,有崩溃的bug可是头等大问题,之前同事教了一招可以稍微弥补下,今天在这记录一下做个笔记。

为了捕获应用运行时异常并给出友好提示,便可实现UncaughtExceptionHandler接口来处理,网上查了下资料,好多大神写的比较完善的例子,我这里只做一点小功能,就是奔溃的时候退出程序重新进入主界面。

UncaughtExceptionHandler接口的介绍:
Thread.UncaughtExceptionHandler
当Thread因未捕获的异常而突然终止时,调用处理程序的接口。

Thread类中一个方法介绍:
setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh)
设置当线程由于未捕获到异常而突然终止,并且没有为该线程定义其他处理程序时所调用的默认处理程序。


我直接在Applocation中实现:

public class MyApplication extends Application implements Thread.UncaughtExceptionHandler {
@Override
public void onCreate() {
super.onCreate();
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread t, Throwable e) {
System.exit(0);
Intent intent = new Intent(this, LauncherActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}


以上Applocation的代码只能实现崩溃重启app,给人一种错觉是好像自己程序没有崩溃,但是这只是一种弥补的措施吧,整体来说还是养成好的写代码的习惯,避免崩溃,或者多测试让上线的app更完善
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: