본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

예외처리: chained exception 예외와 예외를 연결하다

연결된 예외

한 예외가 다른 예외를 발생시킬 수 있고 이를 원인예외라 한다.

이와 같은 구조는 여러가지 예외를 하나의 큰 분류의 예외로 묶어서 다룰수 있다

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