Java.lang.Throwable.initCause() 方法
描述
java.lang.Throwable.initCause() 方法将此 throwable 的原因初始化为指定值。 (原因是导致这个 throwable 被抛出的 throwable。)它通常在构造函数中调用,或者在创建 throwable 之后立即调用
声明
以下是 java.lang.Throwable.initCause() 方法的声明。
public Throwable initCause(Throwable cause)
参数
cause − 这就是原因(它被保存以供以后通过 getCause() 方法检索)。 (允许使用空值,表示原因不存在或未知。)
返回值
此方法返回对此 Throwable 实例的引用。
异常
IllegalArgumentException − 如果原因是可抛出的。
IllegalStateException − 如果这个 throwable 是用 Throwable(Throwable) 或 Throwable(String,Throwable) 创建的,或者这个方法已经在这个 throwable 上调用过。
示例
下面的例子展示了 java.lang.Throwable.initCause() 方法的使用。
package com.tutorialspoint; import java.lang.*; public class ThrowableDemo { public static void main(String[] args) throws Throwable { try { Exception1(); } catch(Exception e) { System.out.println(e); } } public static void Exception1()throws amitException{ try { Exception2(); } catch(otherException e) { amitException a1 = new amitException(); // initializes the cause of this throwable to the specified value. a1.initCause(e); throw a1; } } public static void Exception2() throws otherException { throw new otherException(); } } class amitException extends Throwable { amitException() { super("This is my Exception...."); } } class otherException extends Throwable { otherException() { super("This is any other Exception...."); } }
让我们编译并运行上面的程序,这将产生下面的结果 −
Exception in thread "main" amitException: This is my Exception.... at ThrowableDemo.Exception1(ThrowableDemo.java:18) at ThrowableDemo.main(ThrowableDemo.java:6) Caused by: otherException: This is any other Exception.... at ThrowableDemo.Exception2(ThrowableDemo.java:27) at ThrowableDemo.Exception1(ThrowableDemo.java:15) ... 1 more