예외 되던지기란?
예외를 처리한 후에 인위적으로 다시 발생시키는 방법
예외가 발생할 가능성이 있는 메서드에서 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에서 처리가 되었다.
사용자 입장에서도 에러 로그를 알 필요가 없다. 사용자가 보는 입장에서 좀 더 직관적인 에러를 만들어서 보낼 수 있게끔 한다.
'STUDY > JAVA' 카테고리의 다른 글
[TIL] 피보나치 수열 구하기 - 메모이제이션 (0) | 2023.06.23 |
---|---|
[TIL] 프로그래머스 lv.2 다음 큰 숫자 (비트연산자) (0) | 2023.06.22 |
[TIL] ConcurrentModificationException (0) | 2023.06.20 |
[TIL] < 자바의 정석 > 예제 HighLow - 예외처리해보기 (0) | 2023.06.15 |
[TIL] printStackTrace()는 왜 아래에 찍힐까? (0) | 2023.06.14 |