`

Android处理全局异常

阅读更多

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时,就能记录下来了,如果用户找到程序猿,我们就能得到错误信息了

 

1
0
分享到:
评论

相关推荐

    android 全局异常处理

    android 全局异常处理 继承java.lang中的UncaughtExceptionHandler 的构造方法uncaughtException 来捕获异常

    Android捕获全局异常并写日志保存到sd卡.rar

    Android捕获全局异常并写日志保存到sd卡,捕获异常消息后输出这个消息,可避免APP强制退出,抛出NullPointException玩玩哈,捕获全局异常是因为有的异常我们捕获不到,捕获时我们采用同步方法,以免单例多线程环境下...

    android工程全局异常处理-将未处理异常日志保存在文件中,可后续开发提交至服务器

    在Android应用开发中,异常处理是一项至关重要的任务,它能够确保程序在遇到错误时不会突然崩溃,而是能够优雅地处理并记录错误信息。本篇主要介绍如何实现一个全局的异常处理机制,以便将未处理的异常日志保存到...

    Android 全局异常捕获

    因此,全局异常捕获是一个必要的技术手段,用于捕获和处理那些可能引发程序异常退出的事件。下面将详细解释如何在Android中实现全局异常捕获,以及它的重要性。 首先,让我们理解什么是全局异常捕获。全局异常捕获...

    android全局异常捕获 exception_global

    标题"android全局异常捕获 exception_global"和描述都指向了这个主题,表明我们将探讨如何在Android应用程序中实现全面的异常处理。 全局异常捕获通常涉及到创建一个全局的错误处理器,它能在应用程序的任何地方...

    android全局异常捕获

    总结起来,Android全局异常捕获是一个关键的错误处理机制,它可以帮助开发者在异常发生时采取适当的措施,防止应用崩溃,提升用户体验,同时也有利于问题的定位和修复。通过创建自定义的`Thread....

    Android 捕获全局异常处理

    为了提高应用的健壮性,开发者需要学会捕获并处理全局异常。本文将详细讲解如何在Android中实现全局异常捕获,包括在崩溃前显示提示信息、保存错误日志到本地、发送错误报告邮件以及将错误信息上传至后台服务器。 ...

    android_异常处理_对异常进行全局捕捉

    首先,要实现全局异常捕捉,需要定义一个自定义的UncaughtExceptionHandler类,如CatchHandler,该类需要实现UncaughtExceptionHandler接口,并重写其uncaughtException方法。在这个方法中,可以定义当主线程(main)...

    Android 全局异常处理

    在Android应用开发中,全局异常处理是一个至关重要的环节,它能确保应用在遇到错误时能够稳定运行,并提供良好的用户体验。本文将深入探讨Android全局异常处理的实现方式,以及如何将异常信息存储本地并上传到服务器...

    Android捕获全局异常信息替换系统错误

    首先,我们需要创建一个自定义的应用程序(Application)类,它是整个应用程序的入口点,可以在此监听并处理全局异常。在AndroidManifest.xml文件中,将默认的Application类替换为我们自定义的类,例如`...

    AndroidCrash全局崩溃异常捕获

    1. **全局异常捕获**: 在Android应用中,全局异常捕获通常通过自定义的`UncaughtExceptionHandler`实现。这个处理器会捕获那些没有被应用程序内部捕获的运行时异常,防止应用因为未处理的异常而突然退出。 2. **...

    Android全局异常捕获CrashHandler

    为了解决这个问题,开发者通常会采用全局异常捕获机制,即创建一个自定义的`CrashHandler`,来捕获并处理这些未被捕获的异常。本篇文章将深入探讨Android全局异常捕获`CrashHandler`的相关知识点,以及如何实现和...

    Android全局异常捕获

    因此,实现Android全局异常捕获是一个必要的技术手段,它可以帮助开发者捕获并处理运行时出现的任何异常,避免程序无故终止,并提供调试信息。 全局异常捕获的基本思路是在应用程序的主进程中创建一个顶级的异常...

    Android全局异常捕获及上传服务器

    全局异常捕获是指在整个应用程序运行过程中,无论在哪个线程、哪个模块抛出未被捕获的异常时,都能进行有效的处理,避免应用突然崩溃。这通常通过实现自定义的异常处理器来实现。本主题将深入探讨Android全局异常...

    android全局异常处理

    在Android应用开发中,全局异常处理是至关重要的一个环节,它确保了应用程序在遇到未预期错误时能够优雅地处理,防止应用突然崩溃,提供良好的用户体验。"android全局异常处理"这个主题关注的就是如何在整个Android...

    android捕获全局异常,CrashHandler完整工程源码

    通过以上步骤,你将拥有一个能够捕获并处理全局异常的`CrashHandler`。这个完整工程源码(如`MyApplication2`)可以帮助你更好地理解和实践这个过程。在实际项目中,结合日志分析工具,你可以更有效地定位和解决应用...

    Android 全局捕获异常消息示例.rar

    android全局异常捕获,全局捕获异常消息示例,当程序发生Uncaught异常的时候,有该类来接管程序,并记录错误日志,使用系统默认的UncaughtException处理类,实现自定义错误处理,收集错误信息 发送错误报告等操作,还...

    Android 捕捉全局异常

    本文将详细讲解如何在Android中实现全局异常捕获,特别是如何将运行时异常写入到SD卡中。 首先,我们需要创建一个全局异常处理器。在Android应用中,我们可以利用`Application`类来实现这一功能。`Application`类是...

    安卓日志分析崩溃拦截相关-Android捕获全局异常源码.rar

    这个压缩包“Android捕获全局异常源码”可能包含了一些用于实现这一目的的代码示例和工具。 首先,我们要理解什么是全局异常捕获。在Android系统中,如果应用程序抛出了未被捕获的异常,系统会默认终止该应用,这对...

Global site tag (gtag.js) - Google Analytics