inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

나도코딩의 자바 기본편 - 풀코스 (20시간)

Try With Resources

Catch 안에서 쓰인 throw

해결된 질문

107

dizzydimm

작성한 질문수 6

0

 안녕하세요.

try { writer.close();

} catch (Exception e) {

throw new RuntimeException(e);

}

여기에서 catch 안에 throw로 RuntimeException 을 발생 시켰는데, 이부분은 어디서 catch가 되나요?

java 객체지향

답변 1

1

나도코딩

안녕하세요?

try 구문 내에서 writer.close(); 호출 시 발생할 수 있는 예외를 처리하기 위해 catch 구문에서 RuntimeException을 발생시키고 있습니다. 이 RuntimeException은 현재 메소드에서 발생하는 예외이며, 호출한 메소드에서 처리되지 않으면 프로그램의 최상위 예외 처리기에 전달된답니다. 강의에서 작성한 코드 기준이라면 main 메소드에서 발생한 예외이므로 별도의 catch 구문으로 처리되지 않는다면 JVM (Java Virtual Machine : 자바 프로그램을 실행할 수 있게 해주는 가상 머신) 이 예외를 출력하고 프로그램이 종료됩니다.

만약 RuntimeExceptionmain 메소드 내에서 catch 하고 싶다면, try-catch 구문 밖에 해당 예외를 처리하는 코드로 한 번 더 감싸주는 방법이 있습니다.

다음은 강의 코드 기준으로 작성된 보완 코드입니다.

public static void main(String[] args) {
    try {
        MyFileWriter writer1 = null;
        try {
            writer1 = new MyFileWriter();
            writer1.write("아이스크림이 먹고 싶어요");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                writer1.close();
            } catch (Exception e) {
                throw new RuntimeException(e); // 여기서 발생한 예외
            }
        }
    } catch (RuntimeException re) {
        System.out.println("RuntimeException 처리: " + re.getMessage());
    }
}

궁금증 해결에 도움되길 바라겠습니다 😊

감사합니다.

0

dizzydimm

오호 그렇군요. 자세한 설명 정말 감사합니다.

질문이 한거지 더 있어요.

그러면, 어떤 경우에 이렇게 catch 구문없이 예외를 발생 시켜 주나요??

1

나도코딩

자바에서는 예외 처리를 위임하고 싶은 경우가 있겠네요. 메소드 내에서 발생할 수 있는 예외를 직접 처리하지 않고, 그 메소드를 호출한 상위 메소드에서 처리하도록 위임할 때 catch 구문 없이 예외를 발생시킬 수 있습니다. 예를 들어, 어떤 메소드에서 예외를 처리할 책임이 상위 메소드에 있다고 판단되는 경우가 있는데, 이럴 때 throw 를 사용하여 예외를 상위 메소드로 던질 수 있습니다. 물론 상위 메소드에서는 예외 처리가 적절하게 되어 있어야겠지요 😊

0

dizzydimm

오 알겠습니다. 감사합니다.

자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?

0

136

2

static이 뭐였는지 기억이 안나요 ㅜㅜ

0

112

2

Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의

0

70

1

사고력 키우는 법이 어떤게 있나요?

0

92

2

getter setter

0

101

2

섹션9. 66 메소드 오버로딩 시 질문이 있습니다.

0

78

1

안녕하세요 갑자기 프로그램 에러가 떠서 안되네요

0

75

2

변수 이름짓는법

0

114

2

intelli J 실행오류

0

114

2

혹시 이건 수학적 사고가 부족한 걸까요?

0

152

2

영상이 재생이 안됩니다.

0

167

3

이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.

0

115

2

응용이 어렵습니다.

0

203

2

IntelliJ가 보이지 않습니다.

0

182

3

JDK 버전 문의

0

128

2

BlackBox 파일 내에서 메소드 정의

0

136

1

동기화

0

120

2

Iterator 문의

0

104

1

코드 순서 문의

0

139

1

클래스 메소드

0

149

2

Quiz_05 관련 질문드립니다 !

0

117

2

다운로드가 안됩니다

0

165

2

다형성

0

119

2

HashMap

0

80

2