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

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

문제

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

Java
public class Main { static String process() { try { throw new RuntimeException("error"); } catch (RuntimeException e) { try { return "inner"; } finally { System.out.print("nested"); } } finally { System.out.print("outer"); } } public static void main(String[] args) { System.out.print(process()); } }

정답

nestedouterinner

nestedouterinner

해설

원래 문제 코드에는 return "end";가 포함되어 있어 도달 불가능문(unreachable statement)으로 컴파일 오류가 발생한다. 해당 줄을 제거하면 정상 실행된다. 실행 순서는 다음과 같다. try에서 RuntimeException이 발생해 catch로 이동하고, catch 내부 try에서 return "inner"가 결정된다. 그 직후 내부 finally가 실행되어 "nested"를 출력하고, 이어 외부 finally가 실행되어 "outer"를 출력한다. 마지막으로 반환값 "inner"가 main에서 출력되어 최종 결과는 "nestedouterinner"이다.

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

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

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