1.简介
对于程序抛出的未被捕获的异常,可能会导致程序异常退出,界面不友好且应记录关键错误信息上传至服务器。这里主要使用UncaughtExceptionHandler
2.代码实现
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程序运行中的异常进行捕获,并保存到文档里,省去不停盯着后台查看,方便调试和使用中错误的记录。
实现UncaughtExceptionHandler拦截android异常,捕获全局异常,CrashHandler完整工程源码
详细介绍了android程序中的全局异常处理,示例代码。
android全局异常捕获,全局捕获异常消息示例,当程序发生Uncaught异常的时候,有该类来接管程序,并记录错误日志,使用系统默认的UncaughtException处理类,实现自定义错误处理,收集错误信息 发送错误报告等操作,还...
通过日志文件形式保存安卓程序中出现的异常信息。
做程序开发,肯定离不开与BUG打交道,更加离不开程序异常的出现。在开发的时候,我们可以通断点调试,日志打印,异常捕获工具等方式发现或处理程序中的Exception。那客户在使用我们的应用时,程序了问题,我们怎么...
Android异常捕获。捕获Android程序运行时候产生的Force Close错误,将错误写文件以及发送到指定邮箱。
Android 全局异常错误或崩溃捕捉。当出现崩溃,软件不会闪退,会出现弹出一个对话框,异常错误信息保存在sd卡一个文件夹下。后续需要还可以发送到服务器的。我博客网址: http://blog.csdn.net/qq_16064871。我写了...
Android 全局异常捕获 今天就来说说作为程序猿的我们每天都会遇到的东西bug,出bug不可怕可怕的是没有出bug时的堆栈信息,那么对于bug的信息收集就显得尤为重要了,一般用第三方bugly或者友盟等等都能轻易收集,但是由于...
在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息...
Android异常捕获,可以捕获Android程序崩溃并在T卡写下日志,文件夹就是程序包名
3.5.1 捕获异常 3.5.2 抛出异常 3.6 局部和全局引用 3.6.1 局部引用 3.6.2 全局引用 3.6.3 弱全局引用 3.7 线程 3.7.1 同步 3.7.2 原生线程 3.8 小结 第4章 使用SWIG自动生成JNI代码 4.1 什么是SWIG 4.2 安装 4.2.1...
React Native模块,使您可以注册一个全局错误处理程序,该错误处理程序可以捕获致命/非致命未捕获异常。 该模块有助于防止RN Apps突然崩溃,而不会向用户显示优美的消息。 在当前情况下: In DEV mode , you get ...
react-native模块,让您注册一个全局错误处理程序,可以捕获致命/非致命的未捕获异常
在Android中有的未知的Bug可能在测试中没有及时发现,导致用户在使用时出现程序奔溃,出现用户...android提供了Thread.UncaughtExceptionHandler接口,可以通过实现这个接口,在全局中捕获异常并处理,上传到服务器。
未捕获的异常 Android中未捕获的异常。 (很遗憾,应用已关闭)错误处理程序
无法运行android异常捕获存在sd卡中.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android 库,用于处理未捕获的异常并将其发送到已安装的 IssueBot ( ) 程序,以便向错误跟踪器展示。 使用这个库的挑战是简化存储正在开发的 Android 项目的错误问题 特征: 处理无法识别的异常并将其发布到手机上...
所以一个合格的异常捕获组件也要能达到以下目的:支持在crash时进行更多扩展操作,如:1.打印logcat和应用日志2.上报crash次数3.对不同的crash做不同的恢复措施4.可以针对业务不断改进和适应其实3个方案在Android...
android开发过程中,捕获全局异常,然后关闭程序