本帖最后由 杨梦宇 于 2012-5-21 16:32 编辑
执行的次序应该是,先执行try里面的语句 此时x的值会被记录,但是不会马上返回,接着执行finnally里面的语句 再返回 如果不好理解 请看下面的代码- public class testReturn {
- public static int test() {
- try {
- return fun1();
- } catch (Exception e) {
- } finally {
- return fun2();
- }
- }
- public static int fun1() {
- System.out.println("fun1被执行了");
- System.out.println("fun1的确被执行了,返回么?");
- return 1;
- }
- public static int fun2() {
- System.out.println("fun2被执行了");
- System.out.println("fun2的确被执行了,返回么?");
- return 2;
- }
- public static void main(String[] args) {
- System.out.println(testReturn.test());
- }
- }
复制代码 结果:fun1被执行了
fun1的确被执行了,返回么?
fun2被执行了
fun2的确被执行了,返回么?
2
//注意,结果中第二句之后并没有返回值(但此时x的值会被记 录)!程序之后暂时给finally操纵了,如果finally“把握住了机会” 用return返回了,那返回的是现在x的值,如果没把握住,不管它执行了什么代码,返回的x值还是执行try那个时期记录的。
|