java.lang.Throwable.initCause()方法實例
java.lang.Throwable.initCause() 方法初始化該throwable為指定值的原因。 (原因是導致此拋出得到拋出的對象。)
它一般被調用在構造函數中,或者創建拋出後
聲明
以下是java.lang.Throwable.initCause()方法的聲明
public Throwable initCause(Throwable cause)
參數
-
cause -- 這個是原因(保存為通過getCause()方法之後的檢索)。 (一允許null值,指出原因是不存在的或未知的。
返回值
該方法返回一個引用該Throwable實例。
異常
-
IllegalArgumentException -- 如果原因是可拋出的。
-
IllegalStateException --如果拋出用Throwable(Throwable)或Throwable(String,Throwable)創建,或者這種方法已經調用該拋出。
例子
下麵的例子顯示java.lang.Throwable.initCause()方法的使用。
package com.yiibai; 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