Computer >> 컴퓨터 >  >> 프로그램 작성 >> 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