Java의 리플렉션 API를 사용해 메서드를 호출할 때 해당 메서드가 예외를 던지면 리플렉션 메커니즘은 이 예외를 InvocationTargetException
으로 감싸서 다시 던진다.
왜?
리플렉션을 사용해 메서드를 동적으로 호출하는 과정에서 발생하는 예외와 실제 메서드 내부에서 발생하는 예외를 구분하기 위함이다.
리플렉션 API를 사용하는 코드는 메서드 호출과 관련된 다양한 문제로 인해 예외가 발생할 수 있다.
IllegalAccessException
: 메서드에 접근할 수 없는 경우IllegalArgumentException
: 인자가 잘못된 경우NoSuchMethodException
- …
메서드 자체가 실행되는 도중에 예외를 던지는 경우는 메서드의 로직과 관련된 문제이다. 리플렉션 API는 이러한 예외를 InvocationTargetException
으로 감싸서 호출자에게 전달함으로써, 호출자는InvocationTargetException
를 잡아내고, 원래의 예외를 getCause()
메서드를 통해 확인할 수 있다.
'Languages > Java' 카테고리의 다른 글
WeakHashMap과 약한 참조 (0) | 2023.08.31 |
---|---|
예외처리 (0) | 2023.05.24 |
Primitive Type, Reference Type (0) | 2023.04.25 |
JVM과 GC (0) | 2023.04.12 |
[Java] HashMap, HashTable, HashSet (0) | 2023.04.12 |