4.1) OCJP/1Z0-851 / 2012-08-28
OCJP (1Z0-851 / 2012-08-28 / Exam A) - 33 번
kkikkodev
2015. 7. 26. 18:38
관련 이론 및 문법
(try ~ catch ~ finally 참고)
http://kkikkodev.tistory.com/106
문제 의도
34 라인에서 특정 exception 이 발생했을 때 출력되는 결과를 고르는 문제입니다.
답안
D
풀이 방법
먼저, 첫 번째 경우로, NullPointerException 이 34 라인에서 발생했다고 가정합니다. 그러면, 35 라인에서 걸리게 되고, 36 라인의 "a" 를 화면에 출력합니다. 그리고 37 라인의 catch 영역은 건너뜁니다. (이미 하나의 catch 영역을 실행했으므로) 39 라인의 finally 영역으로 들어가게 되고, 40 라인의 "c" 를 출력합니다. 즉, NullPointerException 이 발생한 경우에는, "ac" 가 화면에 출력됩니다.
두 번째 경우에는, NullPointerException 이 아닌 Exception 이 34 라인에서 발생한 경우입니다. 이 때는, 35 라인은 건너뛰고, 37 라인에 걸리게 됩니다. (모든 Exception 은 Exception 을 상속받았기 때문에) 따라서, 38 라인의 "b" 를 출력하고, 마찬가지로 39 라인의 finally 구문으로 가서 40 라인의 "c" 를 출력합니다. 즉, NullPointerException 이 아닌 Exception 이 발생한 경우에는, "bc" 가 화면에 출력됩니다.
따라서, 답안은 "ac" 혹은 "bc" 중의 하나인 D 가 됩니다.