관련 이론 및 문법

(try ~ catch ~ finally 참고)

http://kkikkodev.tistory.com/106


문제 의도

코드를 컴파일한 후 실행한 결과를 고르는 문제입니다.


답안

C


풀이 방법

주어진 main 메소드를 살펴보면, 전체적으로, try ~ catch 구문으로 감싸져 있습니다. try 구문에는, args 배열 변수에 null 을 대입하고, args[0] 에 "test" 를 대입하고, args[0] 을 출력하고 있습니다. 첫 번째 catch 문에서는, Exception 형의 발생된 예외를 처리하는 구문입니다. 두 번째 catch 문에서는, NullPointerException 형의 발생된 예외를 처리하는 구문입니다.


catch 문을 자세히 들여다보면, 첫 번째 catch 구문은 Exception 형을 처리하고, 그 후의 두 번째 catch 구문은 NullPointerException 형을 처리하고 있습니다. Exception 은 모든 Exception 클래스들의 부모 클래스이기 때문에, try 구문에서 어떤 Exception 이 발생하더라도, 무조건 첫 번째 구문에 해당되어, 처리를 하도록 되어 있는 것입니다. 즉, try 구문에서 NullPointerException 예외가 발생되더라도, 두 번째 구문에서 처리되는 것이 아닌, 첫 번째 구문에서만 처리되게 됩니다. 사실, 두 번째 catch 구문은 절대로 실행되지 않는 영역이기 때문에, 컴파일 에러가 발생하게 됩니다.


따라서, 답안은 C 가 됩니다.


by kkikkodev 2016. 11. 13. 01:18