应用异常终止时将错误发给服务器的原理

本文介绍了一种在Android应用程序中实现异常捕获与处理的方法。通过创建一个继承自Application的类并在配置文件中配置,结合实现Thread.UncaughtExceptionHandler接口,可以在程序崩溃时捕获未捕获的异常并采取相应的措施。

    虽然我们的APP在发布之前会经过层层的测试,保证万无一失,但是人算不如天算,总有一些异常是没法避免的。所以,对于开发者而言,收集这些异常变得尤为重要了,处理这些异常可是我们的应用更加健壮。对于异常反馈的机制如下:

Thread类中有一个静态方法Thread.setUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh),当线程由于位被捕获的异常而突然终止的时候,就会调用传进去的Thread.UncaughtExceptionHandler接口,那么我就在这个接口的uncaughtException(Thread t, Throwable e)方法中手机放生的异常,上传到服务器。

通用做法:

一、创建一个类继承Application类,并在配置文件中配置

<application android:name="com.example.crashtest.app.CrashApplicaiton"/>


二、写一个类实现Thread.UncaughtExceptionHandler接口。

public static class CrashHandler implements UncaughtExceptionHandler{

private static final  CrashHandler INSTANCE = null;

public static CrashHandler getInstance(){

if(INSTANCE != null){

return INSTANCE;

}else{

return new CrashHandler();

}

}

public void init(){

Thread.setDefaultUncaughtExceptionHandler(this);

}

@Override

public void uncaughtException(Thread thread, Throwable ex) {

thread.interrupt();

System.out.println("程序崩溃了,请在此处进行处理");

//关闭打开的Activity,根据自己的需求在这里面进行具体的处理。

for(int i = 0;i<activitys.size();i++){

Activity act = activitys.get(i);

act.finish();

}

}

}


三、Application的onCreate()方法中初始化CrashHandler

@Override

public void onCreate() {

CrashHandler ch = CrashHandler.getInstance();

ch.init();

if(activitys == null){

activitys = new ArrayList<Activity>();

}

super.onCreate();

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值