为了弄清楚try-finally及try-catch-finally的使用和执行流程,进行了如下实验,先分享给网友们,不对的地方指正批评哈!!!
实验方法:根据try所在的函数是否带返回值、return所在的位置和是否抛出异常三种情况进行分析
源码:
代码都有注释,要注意的是"return"和"return XXX"使用了同一个标识,如都用D
实验结果:
1.try-catch-finally实验结果
2.try-finally实验结果
表格中的Error和Warning分别是eclipse给出的提示。
实验总结:
1.对于try-catch-finally,当函数有返回值时,return语句不能单独在try或catch块中,并且只要finally块中有return,都在此处返回。
2.对于try-finally,当函数有返回值时,return语句可以单独在try快中。
3.对于try-catch-finally,当函数有返回值且try中不抛出异常时,如果try中有return,而finally中没有return,则执行流程是try>finally>return;如果try中有return且finally也有return,则执行流程也是try>finally>return,但是函数并不会从try中返回。总之,finally是必须要执行的,如果finally中有return,就从finally中返回,如果没有就从try中返回。
4.对于try-catch-finally,当函数有返回值且try中抛出异常时,finally也是必须执行的,但return语句不凑效。
实验方法:根据try所在的函数是否带返回值、return所在的位置和是否抛出异常三种情况进行分析
源码:
代码都有注释,要注意的是"return"和"return XXX"使用了同一个标识,如都用D
实验结果:
1.try-catch-finally实验结果
2.try-finally实验结果
表格中的Error和Warning分别是eclipse给出的提示。
实验总结: