반응형
이번 글에서는 Class.forName() 메서드를 사용해
클래스의 존재 여부를 동적으로 확인하는 방법과,
존재하지 않는 클래스를 찾으려 할 때 발생하는 예외인
ClassNotFoundException을 처리하는 방법을 배워봅니다.
📌 예제 코드
public class ExceptionHandlingExample {
public static void main(String[] args) {
try {
Class.forName("java.lang.String");
System.out.println("java.lang.String 클래스가 존재합니다.");
System.out.println();
Class.forName("java.lang.String2");
System.out.println("java.lang.String2 클래스가 존재합니다.");
} catch (ClassNotFoundException e) {
e.printStackTrace();
// System.out.println(e.getMessage() + " 클래스가 존재하지 않습니다.");
}
}
}
💻 실행 결과
java.lang.String 클래스가 존재합니다.
java.lang.ClassNotFoundException: java.lang.String2
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at ch11.sec02.exam02.ExceptionHandlingExample.main(ExceptionHandlingExample.java:9)
💬 코드 설명
- Class.forName("java.lang.String"): 자바에서 기본 제공하는 클래스이므로 정상적으로 존재 확인이 됩니다.
- "java.lang.String2"는 존재하지 않는 클래스이므로 ClassNotFoundException이 발생합니다.
- 예외는 catch (ClassNotFoundException e)에서 잡혀 e.printStackTrace()를 통해 예외 정보 전체가 출력됩니다.
- 주석 처리된 e.getMessage()를 활용하면 예외 메시지만 간단히 출력할 수도 있습니다.
💡 포인트 정리
- Class.forName(String className)은 문자열로 클래스 이름을 받아 존재 여부를 런타임에 확인합니다.
- 해당 클래스가 존재하지 않으면 ClassNotFoundException 예외가 발생합니다.
- printStackTrace()는 예외 발생 위치를 포함한 상세 로그를 보여주며, 디버깅 시 유용합니다.
- 사용자에게 메시지를 전달할 목적이라면 getMessage()를 사용하는 것이 더 간결합니다.
📌 정리하자면, Class.forName()은 런타임에 클래스를 동적으로 불러올 때 사용되며,
존재하지 않을 경우 ClassNotFoundException을 발생시킵니다.
이때 적절한 try-catch 처리로 프로그램의 흐름을 유지하고, 에러 원인을 확인할 수 있게 됩니다.
'Java > 자바 정리' 카테고리의 다른 글
97. 예외가 여러 개여도 하나로 처리하자 – 멀티 캐치(Multi-Catch) (0) | 2025.05.13 |
---|---|
96. 예외 처리에도 순서가 있다! – Exception은 맨 마지막에 써야 해요 (0) | 2025.05.13 |
95. 배열 범위도, 숫자 형식도 조심하자 – 예외 두 개를 잡는 try-catch (0) | 2025.05.13 |
93. try-catch로 예외를 안전하게 처리해보자 (0) | 2025.05.13 |
92. 예외 처리의 시작 – NullPointerException은 왜 터질까? (0) | 2025.05.13 |
91. 람다식으로 두 동작 처리하기 – 인터페이스를 분리해서 해결하자! (0) | 2025.05.12 |