`
tmdpzc
  • 浏览: 13786 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Android中的异常处理 CrashHandler

阅读更多
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();
	}

}

分享到:
评论

相关推荐

    Android全局异常捕获CrashHandler

    2. **Android异常处理流程**: 在Android中,当出现未捕获的异常时,系统会默认调用`Thread.getDefaultUncaughtExceptionHandler()`,并传递异常信息。默认的异常处理器通常会终止应用,显示错误报告。全局异常捕获...

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

    首先,我们需要了解Android中的异常处理机制。在Java中,每个线程都有一个默认的`UncaughtExceptionHandler`,当线程中抛出未捕获的异常时,这个处理器会被调用。在Android系统中,主线程(UI线程)也不例外。我们...

    CrashHandler android异常处理

    1. **Android异常处理基础** Android系统默认提供了异常处理机制,但通常只提供简单的堆栈跟踪信息,并不足以进行深入的问题排查。为了提供更全面的错误报告和更好的用户体验,开发者需要自定义异常处理器。 2. **...

    android 捕捉异常并上传至服务器的简单实现

    为了更全面地捕获应用中的异常,可以在应用启动时注册一个Activity生命周期回调,以便在每个Activity的生命周期方法中插入异常处理代码。这样,即使在Activity中发生的异常也能被捕捉到。 ```java class ...

    CrashHandler异常捕捉器

    - `CrashHandler.java`:核心的异常处理类,实现了`UncaughtExceptionHandler`接口。 - `utils`目录:包含一些辅助工具类,如日志工具、文件操作工具等。 - `res`目录:可能包含用于弹出异常提示对话框的布局文件和...

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

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

    CrashHandler.rar

    在CrashHandler中,会先注册自定义的异常处理器,然后在异常发生时,处理器会获取到详细的堆栈信息,包括异常类型、异常消息、堆栈轨迹等,这些信息会被整理成日志格式并保存。 2.3 信息上传与存储 为了便于远程...

    CrashHandler:Android全局异常捕获并弹窗提示

    1. **Android异常处理基础** Android系统允许开发者通过`try-catch`语句来捕获和处理异常。然而,这种局部的异常处理方式无法覆盖所有可能的异常情况,尤其是那些发生在主线程之外或者在代码的不可预见部分。因此,...

    Android全局异常捕获

    在Android应用开发中,异常处理是一项至关重要的任务,它能够确保程序在遇到错误时不会突然崩溃,而是能够优雅地处理并记录错误信息,为开发者提供调试线索。标题"Android全局异常捕获"指的是在Android应用的整个...

    Android异常捕获

    Android异常捕获机制主要涉及到Java语言的异常处理和自定义的CrashHandler。本文将深入探讨这两个方面,并结合`YangdechengApplication`这个应用实例,来阐述如何在Android应用中有效地进行异常管理。 一、Java异常...

    Android使用CrashHandler来获取应用的crash信息demo

    首先,我们需要了解Android系统对异常处理的默认机制。当应用程序出现未捕获的异常时,系统会调用`UncaughtExceptionHandler`接口的`uncaughtException`方法。这是系统提供的一个全局的异常处理机制。我们可以覆盖这...

    全局未捕获异常处理示例

    在Android开发中,全局未捕获异常处理是一个至关重要的环节,它确保了应用程序即使在遇到错误时也能优雅地处理,防止应用突然崩溃,提供良好的用户体验。"全局未捕获异常处理示例"这个主题深入讲解了如何在Android...

    Android-CrashHandler:Android-CrashHandler 将崩溃日志打印到 sdcardcrash

    `Android-CrashHandler`项目的目的就是替换这个默认的处理器,自定义一个更友好的异常处理逻辑。开发者可以实现`Thread.UncaughtExceptionHandler`接口,创建自己的异常处理器类。在这个类中,我们可以添加异常信息...

    Android 全局异常捕获实例详解

    在Android开发中,全局异常捕获是至关重要的一个环节,它可以帮助开发者在应用程序出现未预期错误时,收集必要的信息并进行处理,防止应用崩溃或提供友好的用户反馈。本篇文章将详细讲解如何在Android中实现全局异常...

    Android crash异常信息保存到SD卡中并上传到服务器

    在Android应用开发中,错误处理是一项至关重要的任务。当应用程序崩溃时,为了便于开发者定位问题,需要有效地收集和处理崩溃时产生的异常信息。本话题主要关注如何在Android系统中保存未被捕获的Crash信息至SD卡,...

    详解Android全局异常的捕获处理

    在Android中,每个线程都有一个默认的`UncaughtExceptionHandler`,如果想要自定义处理程序中的全局异常,就需要设置自己的`UncaughtExceptionHandler`实例。 以下是一个简单的实现示例: ```java public class ...

    android程序崩溃异常捕获

    首先,Android系统本身并不提供全局的异常处理机制,因此开发者需要自定义异常处理来确保程序的健壮性。这通常通过设置全局的`UncaughtExceptionHandler`来实现。当程序中未被捕获的异常发生时,系统会默认调用这个...

    CrashHandler.java

    异常崩溃处理 * * 需在程序的入口进行初始化 * CrashHandler.getInstance().init(getCarLockContext()); * Thread.setDefaultUncaughtExceptionHandler(CrashHandler.getInstance());

Global site tag (gtag.js) - Google Analytics