작성
·
162
1
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
1. throw는 예외를 발생시키고 throws는 예외를 던지는거로 알고있는데 위 코드에서 throw e;가 e를 던지는 거라고 하셔서 뭐가 맞는건지 궁금합니다.
catch(Exception e)이 부분에서 이미 예외가 잡히고 불이 꺼진거 아닌가요? throw e;가 예외를 던지는거라면 어떻게 던질수 있는건지 궁금합니다.
답변 1
0
안녕하세요. 명석님, 공식 서포터즈 OMG입니다.
.
1.throw는 예외를 발생시키는 것이 맞고, throws는 예외의 폭탄돌리기(호출한 곳으로 예외를 보냄) 와 같습니다. 이해하신게 맞습니다 😀
.
2.catch만 있다면 이해하신 내용이 맞습니다.(예외를 잡았으니, 불이 꺼진거죠) 하지만 그렇다고하여 예외를 다시 발생 시키지 못하지는 않습니다. 이렇게 한번 더 발생한 예외를 처리하려면, 한번 더 try-catch로 감싸면 되겠죠?
예시)
public static void main(String[] args) {
try {
try {
throw new RuntimeException("e");
} catch (RuntimeException re) {
System.out.println("안쪽 catch");
throw re;
}
} catch (RuntimeException re) {
System.out.println("바깥 catch");
}
}
실행결과)
참고로 강의에서도 설명하시지만, 예시처럼 코드를 구성한 이유는 예외 발생 시 호출 순서가 어떻게 되는지 보여주시기 위함입니다 😀
감사합니다.