public void test(){
{
try{
System.out.println("this is Start;");
tr();
System.out.println("after exception thrown;");
}catch(NullPointerException e){
System.out.println(e.getMessage());
}finally{
System.out.println("this is finally;");
}
throw new NullPointerException("null point exception!");
{
try{
System.out.println("this is Start;");
tr();
System.out.println("after exception thrown;");
}catch(NullPointerException e){
System.out.println(e.getMessage());
}finally{
System.out.println("this is finally;");
}
System.out.println("out of TryCatchFinally");
}
在方法tr中抛出异常
throw new NullPointerException("null point exception!");
}
输出结果:
this is Start;
null point exception!
this is finally;
out of TryCatchFinally
从例中可以清晰看出异常处理的流程。
程序从try语句块开始执行,当执行到某一句catch到异常,马上跳转到catch语句块执行其中的语句。
try语句块中所有位于抛出异常语句位置之后的语句都不会执行。
当执行完catch语句块后,接着执行finally块的语句。(若无异常抛出,则执行完try语句块之后接着执行finally语句块。)
最后,位于try/catch/finally语句块之后的语句全部被执行,函数返回。