本文主要是介绍[HeadFirst] try-catch-finally,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
try-catch-finally
当调用有风险时,有两种事情可能会发生。该方法成功地把try块执行完,不然就会把异常抛出。
public static void testTry_catch_finally(){try {out.println("try block");throw new IOException("Test: try-catch-finally");out.println("Exception occurs. Never invoked"); // Java compiler error: unreachable statment} catch (IOException e){out.println(e.toString());return;}finally {out.println("finally block");}}
finally:无论如何都要执行的部分。
如果try失败了,抛出异常,程序goto到catch块。当catch执行完时,会执行finally块。当finally执行完时,会继续执行其余的部分。
如果try或catch块有return语句,finally还是会执行的。程序会goto到finally块,然后再回到catch的return语句上。
下面是上面代码的输出结果:
try block
java.io.IOException: Test: try-catch-finally
finally block
注意:
1. 如果将catch中的return换成System.exit(-1);,那么finally将永远不会被执行到。
因为System.exit(-1);是从JVM退出(程序也便不再被执行了),而return是从函数中退出(main方法还在)。
2. 如果将catch中的out换成对象err,那么e的值输出顺序是不固定的。
这篇关于[HeadFirst] try-catch-finally的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!