android之自定义UncaughtExceptionHandler类来处理未捕获异常

本文介绍了如何使用UncaughtExceptionHandler来定制Android应用的未捕获异常处理,以提升用户体验并实现异常记录和报告功能。
摘要由CSDN通过智能技术生成

        我们在开发中,经常会遇到各种各样的异常,造成我们的程序崩溃,系统原生的异常处理粗暴的退出,用户体验很差,那么我们能不能自己来处理为捕获异常呢,以供我们来达到更好的用户体验,以及保存异常,甚至是发送给我们的邮箱。下面就介绍UncaughtExceptionHandler类的使用。

  一、我们先来看API中对UncaughtExceptionHandler类的描述。

   

java.lang
接口 Thread.UncaughtExceptionHandler
所有已知实现类:
ThreadGroup
正在封闭类:
Thread
public static interface Thread.UncaughtExceptionHandler
当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口。

当某一线程因未捕获的异常而即将终止时,Java 虚拟机将使用 Thread.getUncaughtExceptionHandler() 查询该线程以获得其 UncaughtExceptionHandler 的线程,并调用处理程序的 uncaughtException 方法,将线程和异常作为参数传递。如果某一线程没有明确设置其 UncaughtExceptionHandler,则将它的 ThreadGroup 对象作为其 UncaughtExceptionHandler。如果 ThreadGroup 对象对处理异常没有什么特殊要求,那么它可以将调用转发给默认的未捕获异常处理程序。

从以下版本开始:
1.5
另请参见:
Thread.setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler), Thread.setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler), ThreadGroup.uncaughtException(java.lang.Thread, java.lang.Throwable)
方法摘要
 void	uncaughtException(Thread t, Throwable e) 
          当给定线程因给定的未捕获异常而终止时,调用该方法。
 
方法详细信息
uncaughtException
void uncaughtException(Thread t,
                       Throwable e)
当给定线程因给定的未捕获异常而终止时,调用该方法。
Java 虚拟机将忽略该方法抛出的任何异常。

参数:
t - 线程
e - 异常
二、从API描述中可以看出 UncaughtExceptionHandler类是当线程因为捕获异常而突然中止时,调用此接口。并实现uncaughtException()方法处理此异常。这样我们就可以得知,当我们的程序出现为捕获异常时候,我们可以实现此接口,重写中的uncaughtException()方法来处理我们的异常,实现我们自己的处理异常功能。

   

public class MyExceptionHandler  implements Thread.UncaughtExceptionHandler{

    @Override
    public void uncaughtException(Thread thread, Throwable throwable) {
        
    }
}
三、实现我们自定义异常处理类的构造函数,初始化系统默认的异常处理类,并设置为当前线程处理。下面代码中的MyApplication是我自定义的application类,以便在我们自己的应用中实现我们的异常处理类,稍后会讲解。

/**
 * 项目名称:MeiJianFang
 * 类描述:
 * 创建人:cdy
 * 创建时间:2016/3/22
 * 修改人:cdy
 * 修改时间:16:37
 * 修改备注:
 */
public class MyExceptionHandler  implements Thread.UncaughtExceptionHandler{
    /** 声明系统默认的UncaughtException处理类 */
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值