Given the code fragment:



public static void main(String[] args) throws IOException {
    BufferedReader brCopy = null;
    try (BufferedReader br = new BufferedReader(new FileReader("employee.txt"))) { // line n1
        br.lines().forEach(c -> System.out.println(c));
        brCopy = br;//line n2
    }
    brCopy.ready(); //line n3;
}

Assume that the ready method of the BufferedReader, when called on a closed BufferedReader, throws an exception, and employee.txt is accessible and contains valid text.

What is the result?

A. A compilation error occurs at line n3.
B. A compilation error occurs at line n1.
C. A compilation error occurs at line n2.
D. The code prints the content of the employee.txt file and throws an exception at line n3.

題解

br變數所參考到的BufferedReader物件為try-with-resources結構的資源,因此在離開try-with-resources結構的try區塊後,資源就會被釋放(BufferedReader物件會close)。

line n3的部份在BufferedReader物件被close之後呼叫ready方法,所以會拋出IOException。