在做项目时,经常会把错误利用异常抛出去,这样在开发时就可以通过手机抛的异常排查错误,很方便。但是当程序开发完毕,版本稳定,需要上线时,为了避免抛出异常影响用户感受,可以捕获全局异常,对异常做出处理。
具体的实方法如下:
利用Thread.UncaughtExceptionHandler 获取异常,并对异常做出处理:
public class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { private Thread.UncaughtExceptionHandler a; MyUncaughtExceptionHandler(){ this.a = Thread.getDefaultUncaughtExceptionHandler(); } @Override public void uncaughtException(Thread thread, Throwable ex) { Log.i("huilurry","ppppppppppppp="+ex.getMessage()); //是否抛出异常 // if(a!=null) // a.uncaughtException(thread, ex); } }
具体调用:
public class HuiLurryActivty extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); String t=android.provider.Settings.System.getString(getContentResolver(), "android_id"); Log.i("huilurry","android_id="+t); huilurry(); throw new NullPointerException("is null"); } HandlerThread localHandlerThread; Handler handler; private void huilurry() { localHandlerThread=new HandlerThread("huilurry"); localHandlerThread.start(); handler=new Handler(localHandlerThread.getLooper()); Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler()); } }
主要是利用了Hander和HandlerThread。
源代码见:https://wangjun-memory.googlecode.com/svn/trunk/android.huilurry