Given:



public class TestApp {
    public static void main(String[] args) {
        TestApp t = new TestApp();
        try {
            t.doPrint();
            t.doList();
        } catch (Exception e2) {
            System.out.println("Caught " + e2);
        }
    }
    public void doList() throws Exception {
        throw new Error("Error");
    }
    public void doPrint() throws Exception {
        throw new RuntimeException("Exception");
    }
}

What is the result?

A.

Caught java.lang.RuntimeException: Exception
Exception in thread "main" java.lang.Error: Error
at TestApp.doList(TestApp.java: 14)
at TestApp.main(TestApp.java: 6)

B.

Exception in thread "main" java.lang.Error: Error
at TestApp.doList(TestApp.java: 14)
at TestApp.main(TestApp.java: 6)

C.

Caught java.lang.RuntimeException: Exception
Caught java.lang.Error: Error

D.

Caught java.lang.RuntimeException: Exception

題解

程式第5行會呼叫第14行的doPrint方法,然後拋出一個RuntimeException物件。這個RuntimeException會在程式第7行的catch被接住,然後輸出「Caught java.lang.RuntimeException: Exception」。