Android_程序未处理异常的捕获与处理
2014-08-05 12:44
417 查看
1.简介
对于程序抛出的未被捕获的异常,可能会导致程序异常退出,界面不友好且应记录关键错误信息上传至服务器。这里主要使用UncaughtExceptionHandler2.代码实现
public class CrashHandler implements UncaughtExceptionHandler {public static final String TAG = CopyOfCrashHandler.class.getSimpleName();
// 系统默认的UncaughtException处理类
private Thread.UncaughtExceptionHandler mDefaultHandler;
private static CopyOfCrashHandler instance;
private Context mContext;
private CopyOfCrashHandler() {
}
/** 获取CrashHandler实例 ,单例模式 */
public static CopyOfCrashHandler getInstance() {
if (instance == null)
instance = new CopyOfCrashHandler();
return instance;
}
/**
* 初始化
*/
public void init(Context context) {
mContext = context;
//记录下默认的UncaughtExceptionHandler
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
//
Thread.setDefaultUncaughtExceptionHandler(this);
}
/**
* 当UncaughtException发生时会转入该函数来处理
*/
@Override
public void uncaughtException(Thread thread, Throwable ex) {
if (!handleException(thread, ex) && mDefaultHandler != null) {
// 如果用户没有处理则让系统默认的异常处理器来处理
mDefaultHandler.uncaughtException(thread, ex);
} else {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
}
}
/**
* 自定义错误处理,收集错误信息 发送错误报告等操作均在此完成.
*
* @param ex
* @return true:如果处理了该异常信息;否则返回false.
*/
private boolean handleException(Thread thread, Throwable ex) {
if (ex == null) {
return false;
}
StringBuffer sb = new StringBuffer();
sb.append(thread + ", Cause By:" + ex).append("\r\n\r\n");
StackTraceElement[] elements = ex.getStackTrace();
for (int i = 0; i < elements.length; i++) {
sb.append(elements[i].toString() + "\r\n");
}
//记录下关键错误信息,可以存至本地并上传至服务器
//LogUtil.bug(TAG, sb.toString());
//打开新Activity友好界面提示
//Util.showDialog(mContext, "时间:"+Util.formatSimpleDateAndTime(new Date()), "程序出现异常,请记录时间并提示开发人员!");
return true;
}
}
相关文章推荐
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- Android_程序未处理异常的捕获与处理
- Android_程序未处理异常的捕获与处理
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- Android程序捕获未处理异常,处理与第三方方法冲突时的异常传递
- Android 程序错误处理全局处理-捕获全局异常
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- Android全局异常处理(捕获异常,不弹出程序崩溃)
- Android_程序未处理异常的捕获与处理
- Android未捕获异常的处理
- Android:处理程序崩溃异常
- Android-小小设置永久解决程序因为未捕获异常而异常终止
- Android:处理程序崩溃异常
- Android游戏开发19:SurfaceView运行机制剖析--处理切换到后台再重新进入程序时的异常
- Android中处理代码未捕获异常
- Android中处理未捕获的异常
- Android如何处理未捕获异常
- android: 捕获程序退出异常
- Android捕获全局异常,并对异常做出处理
- android捕获全局异常,并对异常做出处理