Android自定义捕获Application全局异常

转载 2012年03月27日 14:28:07

Android中如果应用出现异常,程序不做处理的话,通常会弹出“强行关闭”对话框,如下:

image

 

为了给用户更好的体验不需要抛出该对话框,需要对异常进行处理,写了一个例子,处理方式是捕获全局异常。工程目录如下:

image

其中CustomApplication是自定义的Application,用来注册全局异常,CustomException用来对异常进行处理,MainActivity中模拟了一个异常。首先看一下CustomApplication代码:

public class CustomApplication extends Application {

    @Override 
    public void onCreate() { 
        
        super.onCreate(); 
        
        CustomException customException = CustomException.getInstance(); 
        
        customException.init(getApplicationContext()); 
    }  
}

继承了Application,同时将CustomException注册到CustomApplication中。

CustomException实现了UncaughtExceptionHandler ,主要代码如下:

public class CustomException implements UncaughtExceptionHandler {

    //获取application 对象; 
    private Context mContext; 
    
    private Thread.UncaughtExceptionHandler defaultExceptionHandler; 
    //单例声明CustomException; 
    private static CustomException customException; 
    
    private CustomException(){        
    } 
    
    public static CustomException getInstance(){ 
        if(customException == null){ 
            customException = new CustomException(); 
        } 
        return customException; 
    } 
    
    @Override 
    public void uncaughtException(Thread thread, Throwable exception) { 
        // TODO Auto-generated method stub 
        if(defaultExceptionHandler != null){ 
            
            Log.e("tag", "exception >>>>>>>"+exception.getLocalizedMessage()); 
            //将异常抛出,则应用会弹出异常对话框.这里先注释掉 
         //   defaultExceptionHandler.uncaughtException(thread, exception); 
            
        } 
    } 
    
     public void init(Context context) {   
            mContext = context;   
            defaultExceptionHandler  = Thread.getDefaultUncaughtExceptionHandler();   
           Thread.setDefaultUncaughtExceptionHandler(this);  

          }

}

其中

public void uncaughtException(Thread thread, Throwable exception) { 
        // TODO Auto-generated method stub 
        if(defaultExceptionHandler != null){ 
            
            Log.e("tag", "exception >>>>>>>"+exception.getLocalizedMessage()); 
            //将异常抛出,则应用会弹出异常对话框.这里先注释掉 
         //   defaultExceptionHandler.uncaughtException(thread, exception); 
            
        } 
    }

对异常作出处理。然后在Mainfest中添加CustomApplication,如下:

<application android:icon="@drawable/icon" android:label="@string/app_name" 
       android:name="CustomApplication">

最后,在MainActivity中抛出异常,代码如下:

public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        
        //模拟异常 
        throw new  RuntimeException("my exception error"); 
    }

程序运行日志结果如下:

image

源代码见:http://bigcateasymorse.googlecode.com/svn/trunk/android_exception_demo/

在Android中自定义捕获Application全局异常

现在安装 Android 系统的手机和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开...
  • qq_23547831
  • qq_23547831
  • 2014年12月04日 15:25
  • 2206

自定义全局异常捕获

1.实现HandlerExceptionResover 2.注解@ControllerAdvice
  • jinzhencs
  • jinzhencs
  • 2016年06月17日 15:03
  • 2446

Android全局异常捕获机制

安卓异常整体解决方案,从异常捕获、到异常日志写入、到异常上报等。。
  • XiNanHeiShao
  • XiNanHeiShao
  • 2017年06月15日 21:26
  • 1853

Android 全局异常捕获

今天就来说说作为程序猿的我们每天都会遇到的东西bug,出bug不可怕可怕的是没有出bug时的堆栈信息,那么对于bug的信息收集就显得尤为重要了,一般用第三方bugly或者友盟等等都能轻易收集,但是由于...
  • zly921112
  • zly921112
  • 2016年07月09日 18:01
  • 6919

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

这篇文章主要为大家介绍了Android全局异常的捕获处理,为什么要进行捕获处理,如何进行捕获处理,想要了解的朋友可以参考一下 在Android开发中在所难免的会出现程序crash,俗称崩溃。用户的随...
  • zhangli_
  • zhangli_
  • 2016年02月22日 14:49
  • 1445

全局捕获异常

在我们的Android应用开发中 经常出现一些bug 这样在用户体验的过程中 就会产生不好的回应 所以项目中我们实现全局捕获异常 这样 当程序崩溃时 会将报错的信息保存上传到...
  • Mannver
  • Mannver
  • 2016年05月12日 21:43
  • 1111

Android 自定义捕获Application全局异常

转载地址:http://blog.csdn.net/jdsjlzx/article/details/7606423 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行...
  • dszgf5717
  • dszgf5717
  • 2016年01月11日 16:10
  • 736

Android自定义捕获Application全局异常

原文地址:http://blog.csdn.net/u012516952/article/details/50504610 在MainActivity.java代码中,代码是这样写的: ...
  • qq_27280457
  • qq_27280457
  • 2016年04月22日 10:21
  • 250

Android自定义捕获Application全局异常

Android自定义捕获Application全局异常 分类: Android开发 Android优化 Android异常处理 大家都知道,现在安装Android系统的手机版本...
  • zxciop110
  • zxciop110
  • 2013年02月22日 16:40
  • 895

Android自定义捕获Application全局异常

大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了...
  • liaction
  • liaction
  • 2015年12月25日 11:03
  • 228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android自定义捕获Application全局异常
举报原因:
原因补充:

(最多只允许输入30个字)