인프런 커뮤니티 질문&답변

명석님의 프로필 이미지
명석

작성한 질문수

김영한의 실전 자바 - 중급 1편

try-with-resources

catch문에 관하여 질문 있습니다.

작성

·

162

1


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

 

1. throw는 예외를 발생시키고 throws는 예외를 던지는거로 알고있는데 위 코드에서 throw e;가 e를 던지는 거라고 하셔서 뭐가 맞는건지 궁금합니다.

  1. 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");
    }

}

실행결과)

image

참고로 강의에서도 설명하시지만, 예시처럼 코드를 구성한 이유는 예외 발생 시 호출 순서가 어떻게 되는지 보여주시기 위함입니다 😀

감사합니다.

명석님의 프로필 이미지
명석

작성한 질문수

질문하기