当前位置:   article > 正文

Android如何处理未捕获异常_android处理未捕获一场

android处理未捕获一场

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

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

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

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

  1. Thread.setDefaultUncaughtExceptionHandler(
  2. new org.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this)
  3. );


发生异常时,做的处理。

  1. public class UncaughtExceptionHandler implements java.lang.Thread.UncaughtExceptionHandler {
  2. private final Context myContext;
  3. public UncaughtExceptionHandler(Context context) {
  4. myContext = context;
  5. }
  6. public void uncaughtException(Thread thread, Throwable exception) {
  7. StringWriter stackTrace = new StringWriter();
  8. exception.printStackTrace(new PrintWriter(stackTrace));
  9. System.err.println(stackTrace);
  10. Intent intent = new Intent(
  11. "android.fbreader.action.CRASH",
  12. new Uri.Builder().scheme(exception.getClass().getSimpleName()).build()
  13. );
  14. try {
  15. myContext.startActivity(intent);
  16. } catch (ActivityNotFoundException e) {
  17. intent = new Intent(myContext, BugReportActivity.class);
  18. intent.putExtra(BugReportActivity.STACKTRACE, stackTrace.toString());
  19. myContext.startActivity(intent);
  20. }
  21. if (myContext instanceof Activity) {
  22. ((Activity)myContext).finish();
  23. }
  24. Process.killProcess(Process.myPid());
  25. System.exit(10);
  26. }
  27. }


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



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/245415
推荐阅读
相关标签
  

闽ICP备14008679号