今日、私はこの模擬例に似たコードスニペットを見直さなければなりませんでした。最後に例外にネストされた振る舞い
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");
}
}
内側try
がcatch
ブロックを持っていなかったので、次output.Iは、コンパイルエラーを予想印刷しています。
Finally 1 Exiting out of the program
IOException
が外側catch
ブロックでキャッチされた理由を私は理解していません。それはちょうど新しいIOExceptionが(作成) - 誰もがこれを説明することができれば、私は、私は、問題があなたの関数
public void test() throws IOException {
new IOException();
}
が実際に例外をスローしないことだと思います特に、スタックアンワインドプロセス
「試行」には、> = 1の「キャッチ」__および/または__ a「最後に」が必要です。 'catch 'は必須ではありません。 – dkarp