일단 시작.

[TIL] 예외 되던지기(Exception re-throwing)는 언제 사용될까? 본문

STUDY/JAVA

[TIL] 예외 되던지기(Exception re-throwing)는 언제 사용될까?

꾸양! 2023. 6. 21. 14:20

예외 되던지기란?

예외를 처리한 후에 인위적으로 다시 발생시키는 방법

예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 


예외 되던지기의 예시

1. BadInputException 클래스를 하나 만들어준다.

public class BadInputException extends Exception {
    BadInputException() {
        super("잘못된 값을 입력하셨습니다.");
    }
}

2. InputMismatchException이 발생하면 BadInputException을 던지도록 한다.

import java.util.InputMismatchException;
import java.util.Scanner;

public class MyEx {
    public static void main(String[] args) throws BadInputException {
        BadInputException b = new BadInputException();
        Scanner sc = new Scanner(System.in);
        try {
            int a = sc.nextInt();
        } catch (InputMismatchException ime) {
            throw b;
        }
    }
}
"String 입력"
Exception in thread "main" StandardOfJava.ExceptionStudy.BadInputException: 잘못된 값을 입력하셨습니다.
at StandardOfJava.ExceptionStudy.MyEx.main(MyEx.java:9)

발생한 것은 InputMismatchException이지만, 콘솔을 보면 BadInputException 내가 만든 예외로 던지는 것을 확인할 수 있다. 


예외 되던지기는 언제 사용될까?

내부 코드. 내부 에러를 숨기는 데 사용될 수 있다. 위의 예시에서 내가 되던지기를 하지 않았다면 InputMismatchException 클래스에서 처리되었을 것인데, 되던지기를 해서 BadInputException에서 처리가 되었다.

사용자 입장에서도 에러 로그를 알 필요가 없다. 사용자가 보는 입장에서 좀 더 직관적인 에러를 만들어서 보낼 수 있게끔 한다.