在应用运行过程中,有很多异常可能会发生,而我们希望在异常发生的时候第一时间的保存现场。

如何处理未捕获的异常呢?

首先我们要实现一个接口java.lang.Thread.UncaughtExceptionHandler ,要实现该接口里面的 uncaughtException(Threadt,Throwablee),在这个函数里面,我们可以做一些处理。例如将异常信息保存到sdcard上的某个位置,或者提示用户异常出现等等一些操作。

我们在进入Activity的onCreate函数的时候,设置一下处理未捕获异常

[java] view plain copy print ?
  1. Thread.setDefaultUncaughtExceptionHandler(
  2. neworg.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this)
  3. );


发生异常时,做的处理。

[java] view plain copy print ?
  1. publicclassUncaughtExceptionHandlerimplementsjava.lang.Thread.UncaughtExceptionHandler{
  2. privatefinalContextmyContext;
  3. publicUncaughtExceptionHandler(Contextcontext){
  4. myContext=context;
  5. }
  6. publicvoiduncaughtException(Threadthread,Throwableexception){
  7. StringWriterstackTrace=newStringWriter();
  8. exception.printStackTrace(newPrintWriter(stackTrace));
  9. System.err.println(stackTrace);
  10. Intentintent=newIntent(
  11. "android.fbreader.action.CRASH",
  12. newUri.Builder().scheme(exception.getClass().getSimpleName()).build()
  13. );
  14. try{
  15. myContext.startActivity(intent);
  16. }catch(ActivityNotFoundExceptione){
  17. intent=newIntent(myContext,BugReportActivity.class);
  18. intent.putExtra(BugReportActivity.STACKTRACE,stackTrace.toString());
  19. myContext.startActivity(intent);
  20. }
  21. if(myContextinstanceofActivity){
  22. ((Activity)myContext).finish();
  23. }
  24. Process.killProcess(Process.myPid());
  25. System.exit(10);
  26. }
  27. }


通过这样的方式,首先能够提高用户体验,避免了强制关闭的问题的发生。更有效的收集异常信息。

更多相关文章

  1. 自定义View之onMeasure()
  2. 分析linux/android C层的死机堆栈问题
  3. ActionBarSherlock的学习笔记(四) ------------ ActionBarSherlock
  4. Android中通过友盟统计上传自定义错误详解
  5. Android(安卓)HAL 开发 (4)
  6. Android事件传递总结
  7. OpenGL for Android
  8. [转]关于读取手机号码
  9. Android中GUI系统的Event路由机制

随机推荐

  1. Android高德地图开发(2)——地图显示+自定
  2. Android(安卓)中application 详解
  3. android实现session保持【以及web登陆保
  4. Android(安卓)studio 任意修改项目包名(含
  5. Android基础教程——数据存储之操作数据
  6. Android使用Fragment来实现ViewPager的功
  7. 怎么控制安卓应用的权限
  8. Android中StackOverflow的问题
  9. android中LinearGradient线性渐变
  10. Mac OS X下设置android NDK的环境(详细实