2012년 10월 27일 토요일

OCJP 문제풀이 - Question 31


QUESTION 31
Given:

static void test() throws RuntimeException {
  try {
    System.out.print("test ");
    throw new RuntimeException();
  }
  catch (Exception ex) { System.out.print("exception "); }
}

public static void main(String[] args) {
  try { test(); }
  catch (RuntimeException ex) { System.out.print("runtime "); }
  System.out.print("end ");
}

What is the result?

A. test end
B. Compilation fails.
C. test runtime end
D. test exception end
E. A Throwable is thrown by main at runtime.

Answer: D
Section: All

Explanation/Reference:

main 함수가 실행되면 라인 10의 test() 가 실행된다.

test 메소드의 try 내에서 test 를 출력한후,
 Exception을 던지게 되고 이것이 라인 6의 catch문에 잡혀 exception을 출력한다.
이때 이곳에서 일어난 Exception은 이미 처리된 후이므로, 라인 11의 catch에는 걸리지 않고, end를 출력한다.

즉, test exception end 이다.

블로그 보관함