관련 이론 및 문법

(Exception 참고)

http://kkikkodev.tistory.com/173


문제 의도

주어진 소스코드를 컴파일하여 실행한 결과를 고르는 문제입니다.


답안

D


풀이 방법

소스코드를 보면, 크게 2 개의 메소드가 정의되어 있습니다. test 메소드는 RuntimeException 을 throws 하고 있고, 내부에서는 try ~ catch 문으로 감싸져서 Exception 을 받아서 처리하는 구문도 있습니다. 


프로그램이 실행되면, main 메소드가 불리고, try 구문에 있는, test(); 문이 호출됩니다. test 정의부로 넘어가게 되고, try 구문 안의 "test " 를 화면에 출력합니다. 그 다음, throw new RuntimeException(); 문을 통해서 RuntimeException 을 발생시킵니다. 그러면 catch(Exception ex) 문으로 들어가게 되고, (RuntimeException 은 Exception 이기 때문에 catch 에서 잡힘) "exception " 을 화면에 출력하게 됩니다. 이미 발생한 Exception 이 처리가 정상적으로 되었으니, 정상적으로 test 메소드가 종료되어 다시 main 메소드로 돌아가게 되고, main 메소드의 catch 문은 건너뛰게 됩니다. (이미 test 메소드 내의 catch 문에서 예외처리를 완료했으므로) 그리고 catch 문 밑으로 가서 "end " 를 화면에 출력하고 main 메소드를 종료하게 됩니다.


결국 test 메소드에서 try ~ catch 문과 throws 문이 동시에 작성되어 있지만, try ~ catch 문이 실행되고, throws 문은 무시된다는 이야기 입니다.


따라서 답안은 D 가 됩니다.


by kkikkodev 2015. 9. 10. 12:58