InstantiationException — newInstance()로 만들 수 없는 클래스를 만들려 할 때

InstantiationException — newInstance()로 만들 수 없는 클래스를 만들려 할 때

InstantiationException은 애플리케이션이 Class.newInstance() 메서드로 클래스의 인스턴스를 만들려 했는데, 그 클래스 객체를 인스턴스화할 수 없는 경우에 던져지는 예외예요.

출처: Java API Reference

본문

인스턴스화가 실패하는 이유는 다양해요. 예를 들어:

  • 클래스 객체가 추상 클래스, 인터페이스, 배열 클래스, 원시 타입, 또는 void를 나타내는 경우
  • 클래스에 인자 없는(no-arg) 생성자가 없는 경우

이런 조건에 걸리면 이 예외가 나와요. InstantiationError가 비호환 클래스 변경으로 인한 링크 에러라면, 이 예외는 리플렉션으로 newInstance()를 부르는 과정에서 생기는 checked exception이에요.

상속 구조는 다음과 같아요.

java.lang.Object
  java.lang.Throwable
    java.lang.Exception
      java.lang.ReflectiveOperationException
        java.lang.InstantiationException

ReflectiveOperationException의 하위 클래스라서, 리플렉션 예외를 한 번에 처리하고 싶을 때 그 부모 타입으로 잡을 수 있어요.

생성자

  • InstantiationException() — 상세 메시지 없이 생성해요.
  • InstantiationException(String s) — 지정된 상세 메시지로 생성해요.

더 알아보기 (Learn more)