연결된 예외
한 예외가 다른 예외를 발생시킬 수 있고 이를 원인예외라 한다.
이와 같은 구조는 여러가지 예외를 하나의 큰 분류의 예외로 묶어서 다룰수 있다
public class ChainedExceptionExample {
public static void main(String[] args) {
try {
// 메서드 호출
processFile("nonexistent-file.txt");
} catch (Exception e) {
// 예외 정보 출력
System.err.println("최상위 예외 메시지: " + e.getMessage());
// 연결된 예외 정보 출력
System.err.println("원인 예외 메시지: " + e.getCause().getMessage());
// 전체 스택 트레이스 출력
e.printStackTrace();
}
}
// chained exception을 발생시키는 메서드
public static void processFile(String fileName) throws Exception {
try {
// 파일을 처리하는 로직
// 여기에서는 간단히 FileNotFoundException을 발생시킴
throw new FileNotFoundException("파일을 찾을 수 없습니다: " + fileName);
} catch (FileNotFoundException e) {
// FileNotFoundException을 catch하고 새로운 예외로 감싸서 던짐
throw new Exception("파일 처리 중 에러 발생", e);
}
}
}
위를 실행시키면 아래와 같이 출력되겠다.
에러를 조금더 구조화하여 친절한 에러출력이 가능함을 확인 할 수 있다.
최상위 예외 메시지: 파일 처리 중 에러 발생
원인 예외 메시지: 파일을 찾을 수 없습니다: nonexistent-file.txt
java.lang.Exception: 파일 처리 중 에러 발생
at ChainedExceptionExample.processFile(ChainedExceptionExample.java:26)
at ChainedExceptionExample.main(ChainedExceptionExample.java:6)
Caused by: java.io.FileNotFoundException: 파일을 찾을 수 없습니다: nonexistent-file.txt
at ChainedExceptionExample.processFile(ChainedExceptionExample.java:22)
... 1 more
'JAVA' 카테고리의 다른 글
java.lang패키지 : String 클래스 (0) | 2023.12.08 |
---|---|
클래스에서 객체를 복제하다, clone() (0) | 2023.12.08 |
예외처리: exception re-throwing 예외 되던지기 (0) | 2023.12.07 |
예외처리: extends Exception 사용자정의 예외 만들기 (0) | 2023.12.07 |
예외처리: try-catch-resources문, 사용한뒤 자동으로 닫아준다. (0) | 2023.12.07 |