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+ 次查看

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告

© . All rights reserved.