Java链式异常

Java链式异常


jdk 1.4 开始

通过链式异常,可以为异常关联另一个异常。第二个一场描述第一个异常的原因(描述当前异常原因的异常)

eg:假设某个方法由于试图除零而抛出arithmetiException异常,导致问题发生的实际原因并不是除零异常。而是I/O异常,该错误导致了为除数设置了一个不正确的值。


使用链式异常为Throwable的构造函数 添加了 

Throwable(Throwable causeExc)

Throwable(String msg,Throwable causeeXC)


第一种形式中 causeExc是引发当前异常的异常,即causeExc是引发当前一场的背后原因

第二种形式允许在指定引发异常的同时指定一场的描述。

————————这两个构造函数也被引入到了 异常类的Error Exception RuntimeException类中。


API方法

Throwable getCuse()

Throwable initCause(Throwable causeExc)


explain:

getCause():返回引发当前异常的异常,如果不存在异常就返回null

initCause(Throwable causeExc): 将causeExc 和调用的异常关联在一起。每个异常的initCause()方法只能调用一次


code:

  
  
  1. package javastudyforexception;
  2. /**
  3. * Created by D9ing on 16/7/8.
  4. * 链式异常的处理
  5. */
  6. public class ChainExcDemo {
  7.    /**
  8.     * 抛出异常方法
  9.     */
  10.    static void demoproc() throws NullPointerException {
  11.        NullPointerException nullPointerException = new NullPointerException("top layer");
  12.        //关联调用异常
  13.        nullPointerException.initCause(new ArithmeticException("cause"));
  14.        throw nullPointerException;
  15.    }
  16.    public static void main(String[] args) {
  17.        try {
  18.            demoproc();
  19.        } catch (NullPointerException e) {
  20.            System.out.println("caught" + e);
  21.            System.out.println("origin" + e.getCause());
  22.        }
  23.    }
  24. }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值