位置:首頁 > Java技術 > java.lang > java.lang.Throwable.initCause()方法實例

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