Java Throwable initCause()方法与示例

Throwable类initCause()方法

  • initCause()方法在java.lang包中可用。

  • initCause()方法用于将该throwable的原因实例化为给定值,并且在我们抛出一个throwable对象之后立即在构造函数中调用此方法。

  • initCause()方法是一个非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • initCause()方法可能会在初始化原因时引发异常。

    • IllegalArgumentException-如果给定参数是此对象,则可能引发此异常。

    • IllegalStateException-当使用throwable创建给定参数时或在此throwable上已经调用此方法时,可能会引发此异常。

语法:

    public Throwable initCause(Throwable caus);

参数:

  • getCause()抛出的原因-表示使用方法检索的原因,如果返回null,则原因不存在或未知。

返回值:

该方法的返回类型为Throwable,它返回对该“ Throwable”对象的引用。

示例

//Java程序演示示例 
//Throwable initCause(Throwable因果关系)
//Throwable方法 

public class InitCause {
    public static void main(String args[]) throws Exception {

        try {
            //调用div()方法
            div(100, 0);
        } catch (ArithmeticException ex) {
            //显示异常原因的原因
            //抛出
            System.out.println("Exception Cause:" + ex.getCause());
        }

    }

    //此方法将两个数相除,然后
    //引发异常
    public static void div(int d1, int d2) throws Exception {
        try {
            int res = d1 / d2;
        } catch (ArithmeticException ex) {

            //创建一个异常
            ArithmeticException ae = new ArithmeticException();

            //实例化异常原因
            //initCause()方法
            ae.initCause(ex);

            //引发异常 with its cause
            throw (ae);
        }
    }

}

输出结果

Exception Cause:java.lang.ArithmeticException: / by zero