try,catch,fially经典在这里 public void init() { 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public int init() { int i = 0; try { i = 3; return i; }catch(Exception e) { i = 2; return i; }finally { i = 1; }} public int init() { int i = 0; try { i = 3; return i; }catch(Exception e) { i = 2; return i; }finally { i = 1; return i; }} 难道第一个返回值是 3 ,第二个返回值是 1 ??那第二个方法里面的第一个return不就没什么作用了??求解释! 嗯你的答案正确正常是try里的先走return 后面的运算,然后在走finlly我就能理解到这里了。我昨天才看的这个,还看到了 try 的开源没太大必要研究那么底层吧 finally方法必须要执行,但第一个方法的finally方法没有return语句。第二个方法里面的第一个return有作用,finally方法在try里有return语句的情况也会执行,因此将第一个return值取代。 正好这2天在研究这个try{}catch{}finally{}呢 呵呵,详细解释一下,注意一段话:The finally block always executes when the try block exits.即当try块退出时,此时finally才会执行。而楼主的程序,try块什么时候退出呢?是在return语句时退出时。众所周知,return时,返回的是i的值,而不是i本身。此时,i 的值为3。但是赋值呢?是对i本身进行操作,所以finally中赋值改变的是i本身,并不影响return中对i的值的返回。有兴趣,也可以研究一下如下代码:public int init() { int i = 0; try { i = 3; }catch(Exception e) { i = 2; return i; }finally { i = 1; } return i;} //对BB对象进行操作时。 public static BB getBB() { BB bb = new BB(); try { bb.str += "try..."; return bb; } catch (Exception e) { bb.str += "catch..."; return bb; } finally { bb.str += "finally..."; //return bb;//如果是对象,这里的引用效果就导致finally里面用不用return都一样 } }看见这个问题试了试,顺便回帖领取每日10分可用分 程序走到try{}块中的return后,就立马跳到finally{}中去执行! class Obj{ public int i; public Obj(){ i = 1; }} public static Obj init(){ Obj o = new Obj(); try{ o.i = 3; return o; }finally{ o.i = 1; } } public static void main(String[] args) { System.out.println(init().i); }这样呢? 先给大家说个知识点,大家在考虑下。在try{}catch(){}finally中只要语句进了这个体中,就一定会执行finally部分,不管你有没有return之前,当try中出现return后,他会执行finally中的内容在return。 谁会用jbuider2007?问个问题!急! 问个JAVA第一次求职的问题! 如何判断自己用Runtime生成的Process进程是否已经关闭 不同类的对象中具有相同名字的方法,如何调用可以节省代码? 新手提问:关于"java.lang.NoClassDefFoundError:..." 不小心掉电子政务里了 Oracle 10 JDBC连接异常 大家进来看看啊!!! 我想写一个简单的个人简历 关于随机数,请教 这种题该如何去解 SWT中嵌入Swing的JTextFeild却不能编辑(有代码可以直接运行看效果)?
int i = 0;
try {
i = 3;
return i;
}catch(Exception e) {
i = 2;
return i;
}finally {
i = 1;
}
}
int i = 0;
try {
i = 3;
return i;
}catch(Exception e) {
i = 2;
return i;
}finally {
i = 1;
return i;
}
}
正常是try里的先走return 后面的运算,然后在走finlly
我就能理解到这里了。
我昨天才看的这个,还看到了 try 的开源
没太大必要研究那么底层吧
即当try块退出时,此时finally才会执行。而楼主的程序,try块什么时候退出呢?是在return语句时退出时。众所周知,return时,返回的是i的值,而不是i本身。此时,i 的值为3。但是赋值呢?是对i本身进行操作,所以finally中赋值改变的是i本身,并不影响return中对i的值的返回。有兴趣,也可以研究一下如下代码:public int init() {
int i = 0;
try {
i = 3;
}catch(Exception e) {
i = 2;
return i;
}finally {
i = 1;
}
return i;
}
//对BB对象进行操作时。
public static BB getBB() {
BB bb = new BB();
try {
bb.str += "try...";
return bb;
}
catch (Exception e) {
bb.str += "catch...";
return bb;
}
finally {
bb.str += "finally...";
//return bb;//如果是对象,这里的引用效果就导致finally里面用不用return都一样
}
}看见这个问题试了试,顺便回帖领取每日10分可用分
public int i;
public Obj(){
i = 1;
}
} public static Obj init(){
Obj o = new Obj();
try{
o.i = 3;
return o;
}finally{
o.i = 1;
}
} public static void main(String[] args) {
System.out.println(init().i);
}这样呢?
在try{}catch(){}finally中只要语句进了这个体中,就一定会执行finally部分,不管你有没有return之前,当try中出现return后,他会执行finally中的内容在return。