| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1037 人关注过本帖
标题:诡异的finally
只看楼主 加入收藏
syg5434
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:山沟沟
等 级:版主
威 望:10
帖 子:285
专家分:781
注 册:2010-2-28
收藏
得分:0 
回复 10楼 linjx0123
恩,这个我知道,可能是我说的不太明白,我的意思是finally中对msg做修改不会改变try中return的值,但是对整个程序来说,msg是被改变了

不要迷恋哥,嫂子会揍你。阿-弥-陀-佛--!
2010-07-19 09:59
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用syg5434在2010-7-19 09:59:50的发言:

恩,这个我知道,可能是我说的不太明白,我的意思是finally中对msg做修改不会改变try中return的值,但是对整个程序来说,msg是被改变了
finally 改变msg之前已return 了“OK”给String getValue()作为返回值,所以之后msg改变了,也不会影响return的值

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-07-19 10:04
syg5434
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:山沟沟
等 级:版主
威 望:10
帖 子:285
专家分:781
注 册:2010-2-28
收藏
得分:0 
回复 12楼 lampeter123
恩,就是这个意思

不要迷恋哥,嫂子会揍你。阿-弥-陀-佛--!
2010-07-19 10:48
ZhouShuhua
Rank: 1
来 自:重庆市开县
等 级:新手上路
帖 子:5
专家分:2
注 册:2010-7-8
收藏
得分:2 
我复制了一下你的代码的输出的结果是
我被调用
finally
没的撒子问题啊
2010-07-19 13:33
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用ZhouShuhua在2010-7-19 13:33:55的发言:

我复制了一下你的代码的输出的结果是
我被调用
finally
没的撒子问题啊
因为你的程序没有找到文件

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-07-19 14:56
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
回复 7楼 syg5434
其实因为你的try中没有错误,这一句(return msg;)就根本没有执行到.而当有错误时,catch中没有return,这一句就会执行到了.

这个finally的语句虽然写在后面,但执行完不一定会继续往下执行,那要看前面有没有return.如果前的return能被执行到,下面的语句根本不会执行.

打个不好的比方,finally只是为领导擦屁股的.

[ 本帖最后由 cnfarer 于 2010-7-19 20:44 编辑 ]

★★★★★为人民服务★★★★★
2010-07-19 20:38
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
以下是引用cnfarer在2010-7-19 20:38:00的发言:

其实因为你的try中没有错误,这一句(return msg;)就根本没有执行到.而当有错误时,catch中没有return,这一句就会执行到了.

这个finally的语句虽然写在后面,但执行完不一定会继续往下执行,那要看前面有没有return.如果前的return能被执行到,下面的语句根本不会执行.

打个不好的比方,finally只是为领导擦屁股的.
很形象的比喻

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-07-19 20:57
myseemylife
Rank: 2
等 级:论坛游民
帖 子:100
专家分:58
注 册:2009-3-22
收藏
得分:0 
回复 10楼 linjx0123
可不可以这样理解~~getValue()方法中将第一个renturn 回的字符串就当做了返回值·~~finally后的return 不会改变返回值。只有第一次的起作用

唔紸縡唔自己の鉎銘.................
2010-07-23 20:52
快速回复:诡异的finally
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023268 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved