Android(安卓)-- 小功能 如何处理未捕获异常
16lz
2021-01-26
在应用运行过程中,有很多异常可能会发生,而我们希望在异常发生的时候第一时间的保存现场。
如何处理未捕获的异常呢?
首先我们要实现一个接口java.lang.Thread.UncaughtExceptionHandler ,要实现该接口里面的 uncaughtException(Threadt,Throwablee)
,在这个函数里面,我们可以做一些处理。例如将异常信息保存到sdcard上的某个位置,或者提示用户异常出现等等一些操作。
我们在进入Activity的onCreate函数的时候,设置一下处理未捕获异常
[java] view plain copy print ?
- Thread.setDefaultUncaughtExceptionHandler(
- neworg.geometerplus.zlibrary.ui.android.library.UncaughtExceptionHandler(this)
- );
发生异常时,做的处理。
[java] view plain copy print ?
- publicclassUncaughtExceptionHandlerimplementsjava.lang.Thread.UncaughtExceptionHandler{
- privatefinalContextmyContext;
- publicUncaughtExceptionHandler(Contextcontext){
- myContext=context;
- }
- publicvoiduncaughtException(Threadthread,Throwableexception){
- StringWriterstackTrace=newStringWriter();
- exception.printStackTrace(newPrintWriter(stackTrace));
- System.err.println(stackTrace);
- Intentintent=newIntent(
- "android.fbreader.action.CRASH",
- newUri.Builder().scheme(exception.getClass().getSimpleName()).build()
- );
- try{
- myContext.startActivity(intent);
- }catch(ActivityNotFoundExceptione){
- intent=newIntent(myContext,BugReportActivity.class);
- intent.putExtra(BugReportActivity.STACKTRACE,stackTrace.toString());
- myContext.startActivity(intent);
- }
- if(myContextinstanceofActivity){
- ((Activity)myContext).finish();
- }
- Process.killProcess(Process.myPid());
- System.exit(10);
- }
- }
通过这样的方式,首先能够提高用户体验,避免了强制关闭的问题的发生。更有效的收集异常信息。
更多相关文章
- 自定义View之onMeasure()
- 分析linux/android C层的死机堆栈问题
- ActionBarSherlock的学习笔记(四) ------------ ActionBarSherlock
- Android中通过友盟统计上传自定义错误详解
- Android(安卓)HAL 开发 (4)
- Android事件传递总结
- OpenGL for Android
- [转]关于读取手机号码
- Android中GUI系统的Event路由机制