1. 程式人生 > >Android開發完成後異常捕獲

Android開發完成後異常捕獲

         在android裡面往往有很多錯誤比如Android裡面的異常報錯     這些異常是不允許給客戶看的應為客戶看不懂

只需要自己捕獲就好:  看圖  

 

比如:這種報錯  沒有任何意義   只需要自己開的懂   該操作只需要直接閃退就可以了

程式碼如下:

public class MyAppLication extends Application {
    //開天地方法,老母子方法
    @Override
    public void onCreate() {
        Thread.currentThread().setUncaughtExceptionHandler(new MyExceptionHander());
        super.onCreate();
    }

    private class MyExceptionHander implements Thread.UncaughtExceptionHandler {
        @Override
        public void uncaughtException(Thread thread, Throwable ex) {
          ///  Logger.i("MobileSafeApplication", "發生了異常,但是被哥捕獲了..");
            //並不能把異常消滅掉,只是在應用程式關掉前,來一個留遺囑的事件
            try {
                Field[] fields = Build.class.getDeclaredFields();
                StringBuffer sb = new StringBuffer();
                for(Field field:fields){
                    String value = field.get(null).toString();
                    String name  = field.getName();
                    sb.append(name);
                    sb.append(":");
                    sb.append(value);
                    sb.append("\n");
                }

                FileOutputStream out = new FileOutputStream("/mnt/sdcard/error.log");
                StringWriter wr = new StringWriter();
                PrintWriter err = new PrintWriter(wr);
                ex.printStackTrace(err);
                String errorlog = wr.toString();
                sb.append(errorlog);
                out.write(sb.toString().getBytes());
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
            //?專注自殺,早死早超生
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    }
}

該程式碼就是在Application的子類實現閃退功能    需要在   AndroidManifest.xml  裡面Application裡面配置     裡面的name屬性