my git : https://github.com/hejiawang
在软件开发中,无论我们怎么小心的写代码,进行测试,软件都会出现bug。
开发Android程序时,可能因为用户使用的手机型号不同等原因,我们做好的程序还是有可能出现bug,也就是异常。那么我们就要将用户发生的这些异常记录下来,比如说,将用户发现的异常情况记录在用户手机的sd卡中,这样,客户在使用过程中突然系统崩溃了,找到了我们这些程序猿,我们就可以告诉客户把sd上的什么什么文件打给我,这样我们就能根据客户提供的异常信息找到bug了。
处理全局异常的步骤代码:
一、创建一个继承Application的类,别忘在配置文件中进行配置
public class TestApplication extends Application { @Override public void onCreate() { super.onCreate(); // 处理程序全局异常 Thread.currentThread().setUncaughtExceptionHandler( new MyUncaughtExceptionHandler()); } }
二、创建一个实现UncaughtExceptionHandler接口的类,在下面的代码中,我记录的异常发生的时间,用户使用手机的型号等手机信息以及最重要的异常信息,并将这些信息存储在用户的sd卡上。代码如下:
/** * 处理程序全局异常 * * @author wang * */ public class MyUncaughtExceptionHandler implements UncaughtExceptionHandler { @SuppressWarnings("deprecation") @Override public void uncaughtException(Thread thread, Throwable ex) { try { StringBuffer sb = new StringBuffer(); //异常发生时间 long time = System.currentTimeMillis(); Date date = new Date(time); String timeStr = date.toGMTString(); sb.append(timeStr); sb.append("\n"); //用户使用的手机型号等信息 Field[] fields = Build.class.getDeclaredFields(); for (Field field : fields) { String name = field.getName(); String values = field.get(null).toString(); sb.append(name + " : " + values); sb.append("\n"); } //发生异常的具体情况 StringWriter sw = new StringWriter(); PrintWriter write = new PrintWriter(sw); ex.printStackTrace(write); String errorlog = sw.toString(); File log = new File("/sdcard/log.txt"); FileOutputStream fos; fos = new FileOutputStream(log); fos.write(sb.toString().getBytes()); fos.write(errorlog.getBytes()); fos.flush(); fos.close(); } catch (Exception e) { e.printStackTrace(); } // 绕过生命周期的顺序,强制关闭. android.os.Process.killProcess(android.os.Process.myPid()); } }
这样,当用户使用软件时,发生莫名其妙的Exception时,就能记录下来了,如果用户找到程序猿,我们就能得到错误信息了
相关推荐
android 全局异常处理 继承java.lang中的UncaughtExceptionHandler 的构造方法uncaughtException 来捕获异常
Android捕获全局异常并写日志保存到sd卡,捕获异常消息后输出这个消息,可避免APP强制退出,抛出NullPointException玩玩哈,捕获全局异常是因为有的异常我们捕获不到,捕获时我们采用同步方法,以免单例多线程环境下...
android工程全局异常处理-将未处理异常日志保存在文件中,可后续开发提交至服务器
Android 捕获全局异常处理,崩溃前弹出提示框,错误信息保存至本地文件或发送邮件,或上传至后台服务器。
Android 全局异常处理,存储本地及上传服务器
android 异常处理 对异常进行全局捕捉,很实用,特别是产品发布后可以使用该方法。
Android全局异常捕获CrashHandler
AndroidCrash全局崩溃异常捕获,友好的提示页面,收集手机信息+捕获异常信息,并上传到服务器,带重启APP功能。
android全局异常捕获,全局捕获异常消息示例,当程序发生Uncaught异常的时候,有该类来接管程序,并记录错误日志,使用系统默认的UncaughtException处理类,实现自定义错误处理,收集错误信息 发送错误报告等操作,还...
android开发过程中,捕获全局异常,然后关闭程序
Android 全局异常捕获 今天就来说说作为程序猿的我们每天都会遇到的东西bug,出bug不可怕可怕的是没有出bug时的堆栈信息,那么对于bug的信息收集就显得尤为重要了,一般用第三方bugly或者友盟等等都能轻易收集,但是由于...
Android开发中异常捕获,异常信息捕获后存储在sd文件中,可跟踪。
Android 异常捕获以及上传到服务器
android_exception_handler Android上的全局异常处理
Android Crash Helper。安卓APP自定义异常处理器,Release状态下意外奔溃提示更加友好(代替系统默认的那个讨厌的对话框),不影响Debug模式下LogCat的打印。 ***************************************************...
Android 处理全局异常时使用的 jar 包,该包版本是1.0
主要为大家介绍了Android全局异常的捕获处理,为什么要进行捕获处理,如何进行捕获处理,想要了解的朋友可以参考一下
该工具类是对Retrofit2+Rxjava2网络请求异常统一封装处理,将onError(Throwable e)中得异常转化成具体的错误信息。除了提示用户以外,还方便开发者准确定位Bug的所在。
详细介绍了android程序中的全局异常处理,示例代码。