해결된 질문
작성
·
41
답변 1
1
안녕하세요?
try
구문 내에서 writer.close();
호출 시 발생할 수 있는 예외를 처리하기 위해 catch
구문에서 RuntimeException
을 발생시키고 있습니다. 이 RuntimeException
은 현재 메소드에서 발생하는 예외이며, 호출한 메소드에서 처리되지 않으면 프로그램의 최상위 예외 처리기에 전달된답니다. 강의에서 작성한 코드 기준이라면 main
메소드에서 발생한 예외이므로 별도의 catch
구문으로 처리되지 않는다면 JVM (Java Virtual Machine : 자바 프로그램을 실행할 수 있게 해주는 가상 머신) 이 예외를 출력하고 프로그램이 종료됩니다.
만약 RuntimeException
을 main
메소드 내에서 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());
}
}
궁금증 해결에 도움되길 바라겠습니다 😊
감사합니다.
오호 그렇군요. 자세한 설명 정말 감사합니다.
질문이 한거지 더 있어요.
그러면, 어떤 경우에 이렇게 catch 구문없이 예외를 발생 시켜 주나요??