public static int process() throws Exception {
try {
System.out.println("try"); //1
return 1; //2
} finally {
System.out.println("finally"); //3
}
}
执行流程,为什么?public static int process() throws Exception {
try {
System.out.println("try"); //1
return 1; //2
} finally {
System.out.println("finally"); //3
return 3; //4
}
}
执行流程,为什么?
try {
System.out.println("try"); //1
return 1; //2
} finally {
System.out.println("finally"); //3
}
}
执行流程,为什么?public static int process() throws Exception {
try {
System.out.println("try"); //1
return 1; //2
} finally {
System.out.println("finally"); //3
return 3; //4
}
}
执行流程,为什么?
解决方案 »
- 关于简单倒计时处理问题,求大虾帮忙
- 帮忙分析一下原因哦,谢谢!
- 为什么我不注销验证邮件的代码,它不进行以前的用户名等的验证,我要注销掉邮件代码,其它的都可以验证,邮件验证不了,怎么回事
- IK_CAnalyzer的一个问题
- 初学者,两个问题,老师给的作业.
- 使用java -prof 出现的错误
- [求助]请问如何把JTextField的值设置为空???谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!
- 链接SQLSERVER7.0为什么取不到表?
- String 拆分出错,求帮助!
- jdbc 连接数据库问题,请大家救命
- 关于QUAQUA LOOK and feel是用的一点小问题
- 帮忙写个socket客户端代码,要求能连接到Socks5代理服务器,服务器有用户名密码验证。
finally 块里面的执行完此时才真正return
按顺序执行try,发生异常则执行catch 再执行finally, try catch finally以外不执行。
try catch finally按顺序执行try,再执行finally,在执行try catch finally 之外代码
按顺序执行try,发生异常则执行catch 再执行finally, try catch finally以外不执行。
public class Test {
public static void main(String... args) {
System.out.println(getValue1());
System.out.println(getValue2());
}
public static int getValue1() {
int i1 = 0;
int i2 = 1;
try {
return i1;
} finally {
return i2;
}
}
public static int getValue2() {
int i = 1;
try {
return i;
} finally {
i++;
}
}
}getValue1()和getValue2()返回的都是1;
因为getValue1()try和finally都有return 所以try里的return的值会废弃
getValue2()执行顺序是执行try然后执行finally,因try里的return的值会放到临时变量里,finally修改的是原始变量,但try里返回的是临时变量,所以是1
1-2-3-4先执行try里面的数据, finally是最后一定执行的
第一个
try
finally
1
第二个
try
finally
3
我讲下顺序:
第一个执行顺序:try中代码顺序执行,碰到return的时候,跳转到finally执行完里面的代码,在回来执行try中的return.所以结果就是try finally 1第二个执行顺序:try中代码顺序执行,碰到return的时候,跳转到finally执行里面的代码,这时候发现finally也有return,按优先级try和finally都有return,那优先执行finally里的return所以返回3,try里的return不执行。
按顺序执行try,发生异常则执行catch 再执行finally, try catch finally以外不执行