Java 中的try-catch-finally

来源:互联网 发布:淘宝账号申诉 编辑:程序博客网 时间:2024/05/16 07:57
java 的异常处理中,
在不抛出异常的情况下,程序执行完 try 里面的代码块之后,该方法并不会立即结束,而是继续试图去寻找该方法有没有 finally 的代码块,
如果没有 finally 代码块,整个方法在执行完 try 代码块后返回相应的值来结束整个方法;

如果有 finally 代码块,此时程序执行到 try 代码块里的 return 语句之时并不会立即执行 return,而是先去执行 finally 代码块里的代码,
若 finally 代码块里没有 return 或没有能够终止程序的代码,程序将在执行完 finally 代码块代码之后再返回 try 代码块执行 return 语句来结束整个方法;

若 finally 代码块里有 return 或含有能够终止程序的代码,方法将在执行完 finally 之后被结束,不再跳回 try 代码块执行 return。
在抛出异常的情况下,原理也是和上面的一样的。

也就是说,执行try-catch-finally一套流程中,程序都会在try或catch的return之前先进入finally执行期内代码。
因此如果finally中有return的话,try和catch的return
就都不会被执行。如果finally中更没有return,则执行完finally的代码之后,程序继续跳回到try或catch中执行剩下 的return。
0 0