정보처리기사 실기JavaJava - try-catch-finally 실행 순서난이도 3SHORT_ANSWER

정보처리기사 실기 Java - try-catch-finally 실행 순서 기출문제 #1672

문제

다음 Java 코드의 실행 결과를 쓰시오.

Java
public class Main { static String process() { try { if (Math.random() > 0.5) { throw new RuntimeException(); } return "SUCCESS"; } catch (RuntimeException ex) { try { return "CAUGHT"; } finally { System.out.print("INNER"); } } finally { System.out.print("OUTER"); } } public static void main(String[] args) { // Math.random()이 항상 0.8을 반환한다고 가정 System.out.print(process()); } }

정답

INNEROUTERCAUGHT

INNEROUTERCAUGHT

해설

Math.random()이 0.8(>0.5)이므로 RuntimeException이 발생합니다. catch 블록에서 실행되는 중첩된 try-finally 구조의 실행 순서는 다음과 같습니다: 1) catch 블록 내부의 try에서 return "CAUGHT"가 결정되지만 즉시 반환되지 않음, 2) 내부 finally 블록이 먼저 실행되어 "INNER" 출력, 3) 외부 finally 블록이 실행되어 "OUTER" 출력, 4) 최종적으로 "CAUGHT"가 반환되어 출력됩니다. 따라서 "INNEROUTERCAUGHT"가 출력됩니다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[정보처리기사 실기] Java - try-catch-finally 실행 순서 Java 기출 #1672 | sqldpass