android中如果出现未捕获异常就会让应用程序crash掉,给用户的提示仅仅是该应用已崩溃,很不友好,自己定义一个UncaughtExceptionHanlder来捕获UI线程上的Exception,使用AlertDialog的方式展示出来,可以方便测试,也可以提升用户体验
package com.tcl.navigator.common;
import java.lang.Thread.UncaughtExceptionHandler;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Looper;
import android.util.Log;
/**
*
* @author peizc 2012-11-23
* 默认处理机制
*/
public class CrashHandler implements UncaughtExceptionHandler {
private static final String FLAG = "CrashHandler";
private Context mContext;
private static CrashHandler INSTANCE = new CrashHandler();
private Thread.UncaughtExceptionHandler mDefaultHandler;
public static CrashHandler getInstance() {
return INSTANCE;
}
public void init(Context ctx) {
mContext = ctx;
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread thread, final Throwable ex) {
// TODO Auto-generated method stub
Log.e(FLAG, ex.toString());
new Thread() {
public void run() {
Looper.prepare();
new AlertDialog.Builder(mContext).setTitle("提示")
.setCancelable(false).setMessage("Error...\n" + ex.toString())
.setNeutralButton("I know",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
ex.printStackTrace();
System.exit(0);
}
}).create().show();
Looper.loop();
};
}.start();
}
}
分享到:
相关推荐
2. **Android异常处理流程**: 在Android中,当出现未捕获的异常时,系统会默认调用`Thread.getDefaultUncaughtExceptionHandler()`,并传递异常信息。默认的异常处理器通常会终止应用,显示错误报告。全局异常捕获...
首先,我们需要了解Android中的异常处理机制。在Java中,每个线程都有一个默认的`UncaughtExceptionHandler`,当线程中抛出未捕获的异常时,这个处理器会被调用。在Android系统中,主线程(UI线程)也不例外。我们...
1. **Android异常处理基础** Android系统默认提供了异常处理机制,但通常只提供简单的堆栈跟踪信息,并不足以进行深入的问题排查。为了提供更全面的错误报告和更好的用户体验,开发者需要自定义异常处理器。 2. **...
为了更全面地捕获应用中的异常,可以在应用启动时注册一个Activity生命周期回调,以便在每个Activity的生命周期方法中插入异常处理代码。这样,即使在Activity中发生的异常也能被捕捉到。 ```java class ...
- `CrashHandler.java`:核心的异常处理类,实现了`UncaughtExceptionHandler`接口。 - `utils`目录:包含一些辅助工具类,如日志工具、文件操作工具等。 - `res`目录:可能包含用于弹出异常提示对话框的布局文件和...
全局异常捕获是指在整个应用程序运行过程中,无论在哪个线程、哪个模块抛出未被捕获的异常时,都能进行有效的处理,避免应用突然崩溃。这通常通过实现自定义的异常处理器来实现。本主题将深入探讨Android全局异常...
在CrashHandler中,会先注册自定义的异常处理器,然后在异常发生时,处理器会获取到详细的堆栈信息,包括异常类型、异常消息、堆栈轨迹等,这些信息会被整理成日志格式并保存。 2.3 信息上传与存储 为了便于远程...
1. **Android异常处理基础** Android系统允许开发者通过`try-catch`语句来捕获和处理异常。然而,这种局部的异常处理方式无法覆盖所有可能的异常情况,尤其是那些发生在主线程之外或者在代码的不可预见部分。因此,...
在Android应用开发中,异常处理是一项至关重要的任务,它能够确保程序在遇到错误时不会突然崩溃,而是能够优雅地处理并记录错误信息,为开发者提供调试线索。标题"Android全局异常捕获"指的是在Android应用的整个...
Android异常捕获机制主要涉及到Java语言的异常处理和自定义的CrashHandler。本文将深入探讨这两个方面,并结合`YangdechengApplication`这个应用实例,来阐述如何在Android应用中有效地进行异常管理。 一、Java异常...
首先,我们需要了解Android系统对异常处理的默认机制。当应用程序出现未捕获的异常时,系统会调用`UncaughtExceptionHandler`接口的`uncaughtException`方法。这是系统提供的一个全局的异常处理机制。我们可以覆盖这...
在Android开发中,全局未捕获异常处理是一个至关重要的环节,它确保了应用程序即使在遇到错误时也能优雅地处理,防止应用突然崩溃,提供良好的用户体验。"全局未捕获异常处理示例"这个主题深入讲解了如何在Android...
`Android-CrashHandler`项目的目的就是替换这个默认的处理器,自定义一个更友好的异常处理逻辑。开发者可以实现`Thread.UncaughtExceptionHandler`接口,创建自己的异常处理器类。在这个类中,我们可以添加异常信息...
在Android开发中,全局异常捕获是至关重要的一个环节,它可以帮助开发者在应用程序出现未预期错误时,收集必要的信息并进行处理,防止应用崩溃或提供友好的用户反馈。本篇文章将详细讲解如何在Android中实现全局异常...
在Android应用开发中,错误处理是一项至关重要的任务。当应用程序崩溃时,为了便于开发者定位问题,需要有效地收集和处理崩溃时产生的异常信息。本话题主要关注如何在Android系统中保存未被捕获的Crash信息至SD卡,...
在Android中,每个线程都有一个默认的`UncaughtExceptionHandler`,如果想要自定义处理程序中的全局异常,就需要设置自己的`UncaughtExceptionHandler`实例。 以下是一个简单的实现示例: ```java public class ...
首先,Android系统本身并不提供全局的异常处理机制,因此开发者需要自定义异常处理来确保程序的健壮性。这通常通过设置全局的`UncaughtExceptionHandler`来实现。当程序中未被捕获的异常发生时,系统会默认调用这个...
异常崩溃处理 * * 需在程序的入口进行初始化 * CrashHandler.getInstance().init(getCarLockContext()); * Thread.setDefaultUncaughtExceptionHandler(CrashHandler.getInstance());