今天在工作中,我不得不查看一個類似於這個模擬例子的代碼片段。終於在例外情況下嵌套的行爲
package test;
import java.io.IOException;
import org.apache.log4j.Logger;
public class ExceptionTester {
public static Logger logger = Logger.getLogger(ExceptionTester.class);
public void test() throws IOException {
new IOException();
}
public static void main(String[] args) {
ExceptionTester comparator = new ExceptionTester();
try {
try {
comparator.test();
} finally {
System.out.println("Finally 1");
}
} catch(IOException ex) {
logger.error("Exception happened" ex);
// also close opened resources
}
System.out.println("Exiting out of the program");
}
}
它打印以下output.I預期的編譯錯誤,因爲內try
沒有一個catch
塊。
Finally 1 Exiting out of the program
我不明白爲什麼IOException
由外catch
塊捕獲。我將不勝感激,如果任何人都可以解釋這一點,尤其是通過引用堆棧展開過程
`try`必須有> = 1`catch` __和/或``finally`。 'catch'不是必需的。 – dkarp 2011-01-12 03:12:16