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() 方法吗?