Java 中的建構函式可以丟擲異常嗎?


是的,建構函式可以在 Java 中丟擲異常。

建構函式是一種特殊的型別的方法,用於初始化物件,並且用於使用new 關鍵字建立類的物件,其中物件也被稱為類的例項。類的每個物件都將擁有自己的狀態(例項變數)並訪問其類的方法。

從建構函式中丟擲異常

  • 受檢異常可用於指示在嘗試建立例項時出現的合法問題,而非受檢異常通常表示客戶端程式碼或建構函式本身中的錯誤。
  • 在這兩種情況下,物件實際上是在堆空間中分配的,但不會返回對它的引用。物件保持部分初始化狀態,直到被垃圾回收。因此,我們得出結論,從建構函式本身(透過使用this引用)儲存對物件的引用是一件危險的事情,因為我們可能會訪問處於無效狀態的物件。
  • 關於建構函式中異常的另一個重要事項與反射有關。例如,當我們需要使用類物件(例如test)呼叫空建構函式時,有時我們會使用test.newInstance()方法。
  • 建構函式丟擲的任何異常都會在不更改的情況下傳播。換句話說,newInstance()方法可能會丟擲它甚至沒有宣告的受檢異常

示例

線上演示

public class ConstructorExceptionTest {
   public ConstructorExceptionTest() throws InterruptedException {
      System.out.println("Preparing an Object");
      Thread.sleep(1000);
      System.out.println("Object is ready");
   }
   public static void main(String args[]) {
      try {
         ConstructorExceptionTest test = new ConstructorExceptionTest();
      } catch (InterruptedException e) {
         System.out.println("Got interrupted...");
      }
   }
}

輸出

Preparing an Object
Object is ready

更新於: 2019-07-30

5K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告