class chain_exceptions{
public static void main(String args[]){
try
{
f1();
}
catch(IndexOutOfBoundsException e)
{
System.out.println("A");
throw new NullPointerException(); //Line 0
}
catch(NullPointerException e) //Line 1
{
System.out.println("B");
return;
}
catch (Exception e)
{
System.out.println("C");
}
finally
{
System.out.println("D");
}
System.out.println("E");
}
static void f1(){
System.out.println("Start...");
throw new IndexOutOfBoundsException( "parameter" );
}
}
行 1 が行 0 からスローされた NullPointerException をキャッチすることを期待していましたが、発生しません。
しかし、なぜそうですか?
別の catch ブロックが定義されている場合、Line1 の NPE ハンドラーがそれをキャッチできないのはなぜですか?
「スロー」が直接 main() メソッドに行くからですか?