Android UncaughtExceptionHandler

2018-11-08  本文已影响0人  王魔王

一,定义该类

/**
 * 全局异常捕获类
 */
public class UnCatchExceptionHandler implements Thread.UncaughtExceptionHandler {


    private Context context;//留作备用

    private Thread.UncaughtExceptionHandler defaultExceptionHandler;//系统的默认异常处理类

    private static UnCatchExceptionHandler instance = new UnCatchExceptionHandler();//用户自定义的异常处理类



    private UnCatchExceptionHandler() {
    }

    public static UnCatchExceptionHandler getInstance(){
        return instance;
    }

    public void  init(Context context){
        this.context=context.getApplicationContext();
        defaultExceptionHandler =Thread.getDefaultUncaughtExceptionHandler();
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    @Override
    public void uncaughtException(Thread t, Throwable e) {


        // TODO: 2018/11/8 收集异常信息,上传服务器



        //如果系统提供了异常处理类,则交给系统去处理
        if (defaultExceptionHandler != null) {
            defaultExceptionHandler.uncaughtException(t,e);
        }else {
            //否则我们自己处理,自己处理通常是让app退出
            Process.killProcess(Process.myPid());
        }
    }
}

二、使用该类


/**
 * 我们自己的Application类
 */
public class GenAndApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //使用自定义全局异常捕获类
       UnCatchExceptionHandler.getInstance().init(this);
    }
}
上一篇下一篇

猜你喜欢

热点阅读