大佬教程收集整理的这篇文章主要介绍了android 捕获系统异常并上传日志具体实现,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在做项目时,经常会把错误利用异常抛出去,这样在开发时就可以通过手机抛出的异常排查错误。但是当程序开发完毕,版本稳定,需要上线时,为了避免抛出异常影响用户感受,可以用UncaughtExceptionHandler捕获全局异常,对异常做出处理。比如我们可以获取到抛出异常的时间、手机的硬件信息、错误的堆栈信息,然后将获取到的所有的信息发送到服务器中,也可以发送到指定的邮件中,以便及时修改bug。
示例:
自定义异常类实现UncaughtExceptionHandler接口,当某个页面出现异常就会调用uncaughtException这个方法,我们可以在这个方法中获取异常信息、时间等,然后将获取到的信息发送到我们指定的服务器
public void uncaughtException(Thread arg0,Throwable arg1) {
System.out.println("程序挂掉了 ");
// 1.获取当前程序的版本号. 版本的id
String versioninfo = getVersionInfo();
// 2.获取手机的硬件信息.
String mobileInfo = getMobileInfo();
// 3.把错误的堆栈信息 获取出来
String errorinfo = getErrorInfo(arg1);
// 4.把所有的信息 还有信息对应的时间 提交到服务器
try {
service.createNote(new PlaintextConstruct(dataFormat.format(new Date())),
new PlaintextConstruct(versioninfo+mobileInfo+errorinfo),"public","yes");
} catch (Exception E) {
e.printStackTrace();
}
//干掉当前的程序
android.os.process.killProcess(android.os.process.myPid());
}
/**
* 获取错误的信息
* @param arg1
* @return
*/
private String getErrorInfo(Throwable arg1) {
Writer writer = new StringWriter();
PrintWriter pw = new PrintWriter(writer);
arg1.printStackTrace(pw);
pw.close();
String error= writer.toString();
return error;
}
/**
* 获取手机的硬件信息
* @return
*/
private String getMobileInfo() {
StringBuffer sb = new StringBuffer();
//通过反射获取系统的硬件信息
try {
Field[] fields = Build.class.getDeclaredFields();
for(Field field: fields){
//暴力反射,获取私有的信息
field.setAccessible(true);
String name = field.getName();
String value = field.get(null).toString();
sb.append(name+"="+value);
sb.append("\n");
}
} catch (Exception E) {
e.printStackTrace();
}
return sb.toString();
}
/**
* 获取手机的版本信息
* @return
*/
private String getVersionInfo(){
try {
PackageManager pm = context.getPackageManager();
PackageInfo info =pm.getPackageInfo(context.getPackagename(),0);
return info.versionName;
} catch (Exception E) {
e.printStackTrace();
return "版本号未知";
}
}
}
以上是大佬教程为你收集整理的android 捕获系统异常并上传日志具体实现全部内容,希望文章能够帮你解决android 捕获系统异常并上传日志具体实现所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。