try、catch和finally的执行顺序是按顺序执行的,具体来说,如果try中没有异常,则顺序为try→finally;如果try中有异常,则顺序为try→catch→finally。当try、catch、finally中加入return之后,就会有几种不同的情况出现1。以下是几种常见情况:
1
try{ return; } catch(){} finally{} return; 程序执行try块中return之前(包括return语句中的表达式运算)代码;再执行finally块,最后执行try中return; finally块之后的语句return,因为程序在try中已经return所以不再执行。
2
try{} catch(){} finally{} return; 程序首先执行try块中的代码,如果有异常则执行catch块中的代码,无论如何都会执行finally块中的代码2。在catch块的return语句执行完后,并不直接返回而是执行finally块中的代码,最后返回结果63。
3
try{} catch(){} finally{} return; 程序首先执行try块中的代码,如果有异常则执行catch块中的代码,无论如何都会执行finally块中的代码2。在catch块的return语句执行完后,并不直接返回而是继续向下运行到finally块中并再次调用return语句进行返回操作3。