CNDEV
CNDEV.ORG
当前在线
论坛
CBD
程序员情感CBD
程序员见面交流会
CBD开发区
Java/J2ME
.NET/C#
数据库
Delphi/BCB
Visual C
其它
修真养身
中国象棋
纪念日
谈钱太俗,还是投机吧
听音乐
iCosta
资源共享
一隅
好文共赏
看电影看美剧
待定
狗屎
雪域召唤
工作流
专业显摆区
语录
情感
批评与自我批评
爱情故事
发牢骚
看三点区
游戏
CNDEV-CS/WOW
浩宇长空
生活
家有XPH
我爱学英语
美食天地ORG
半调子体育迷
观澳园友邻
搞笑奇文
拍照片
我读书我存在
论坛系统
超级垃圾站
系统建议及BUG
系统测试
中国开发网
: 论坛:
程序员情感CBD
: 贴子 319537
王中王
: __finally里不管是异常还是return都会被执行
[阅读: 532] 2006-04-28 05:02:48
<空>
相关信息:
靠,现在才发现,BCB里面,如果正常用 return 返回,try __finally 中后面的 finally 不会被执行到
(空) (
Fish
[1451]
2006-04-28 04:39
)
没说清楚。指的是 try {} 部分的代码中,如果没出异常就用return返回,finally{}这部分不会被执行。
(空) (
Fish
[606]
2006-04-28 04:42
)
靠,这里一直理解错误,程序得赶紧修正
(空) (
Fish
[366]
2006-04-28 04:42
)
Delphi的遗毒不小啊
(空) (
GoodHope
[363]
2006-04-28 04:45
)
又又又一次地暴露了俺的无知
(空) (
Fish
[350]
2006-04-28 04:45
)
你Y还不快点过来
(17字)
(
GoodHope
[415]
2006-04-28 04:47
)
Knowing more today than yesterday is good news about today, not bad news about yesterday. ……
(空) (
sealw
[433]
2006-04-28 04:55
)
不会的呀,应该行的吧……,__try __finally 试过吗?
(空) (
没脾气2x
[482]
2006-04-28 04:56
)
不好意思,还是俺没表达清楚,俺按照delphi的习惯,在try ... finally 里面又包了一个 try ..catch,示例如下:
(381字)
(
Fish
[921]
2006-04-28 05:12
)
__finally 应该是与 __try 配对的吧。用 try 来是不是会有问题?
(空) (
没脾气2x
[508]
2006-04-28 05:17
)
这样啊,俺试试看
(空) (
Fish
[428]
2006-04-28 05:20
)
经测试,不是这个问题,再想
(空) (
没脾气2x
[410]
2006-04-28 05:20
)
不行,用__try也不行
(空) (
Fish
[419]
2006-04-28 05:21
)
delphi 里,在 try 部分写 Exit,也会执行到 finally 部分的吧?
(空) (
pcplayer
[983]
2006-04-28 05:01
)
C里面的exit 就是退出程序了。不好意思,之前没表述清楚,参阅前面跟在没2x后面的回帖
(空) (
Fish
[494]
2006-04-28 05:15
)
__finally里不管是异常还是return都会被执行
(空) (
王中王
[531]
2006-04-28 05:02
)
代码如下,通过测试:
(100字)
(
王中王
[456]
2006-04-28 05:07
)
是啊。这结构应和 delphi 的一样的。可能该BS米FISH了
(空) (
没脾气2x
[336]
2006-04-28 05:10
)
不好意思,之前没表达清楚,请看俺前面跟在没2x后面的回帖 (空) (Fish [0] 今天 13:13)
(空) (
Fish
[371]
2006-04-28 05:14
)
不好意思,之前没表达清楚,请看俺前面跟在没2x后面的回帖
(空) (
Fish
[368]
2006-04-28 05:13
)
是真的。。。。我再查查
(空) (
王中王
[328]
2006-04-28 05:19
)
在 __finally 前面放一个标签,然后用 goto 语句到这里就可以执行到。但是,用goto....
(空) (
Fish
[555]
2006-04-28 05:25
)
BS用goto的
(空) (
玉楼
[353]
2006-04-28 05:29
)
是啊,当然不用 goto
(空) (
Fish
[530]
2006-04-28 05:35
)
goto挺好的啊
(10字)
(
GoodHope
[402]
2006-04-28 06:04
)
能不用就不用,嘿嘿
(空) (
Fish
[398]
2006-04-28 06:05
)
挺好用的
(16字)
(
GoodHope
[364]
2006-04-28 06:06
)
我靠,IFLU,你是艺高人胆大,俺胆小,最多在一个函数里面跳一下
(空) (
Fish
[423]
2006-04-28 06:17
)
不过还好可以用STL的智能指针的机制来做Finally
(空) (
王中王
[514]
2006-04-28 05:22
)
俺主要是想在finally里面释放函数开头部分创建的一些对象、分配的内存什么的。智能指针什么的俺还不会
(空) (
Fish
[539]
2006-04-28 05:24
)
是Finally的Bug,TeamB好多人说到这个问题
(257字)
(
王中王
[479]
2006-04-28 05:31
)
俺改结构吧,实际上可以用 if else 来做这个。之前是偷懒图省事
(空) (
Fish
[346]
2006-04-28 05:36
)
避免多个return是结构化时代的产物,现在应该尽快返回。
(空) (
GoodHope
[408]
2006-04-28 06:03
)
C++中finally是拦截不了return的。
(7字)
(
GoodHope
[579]
2006-04-28 05:30
)
:(
(空) (
没脾气2x
[346]
2006-04-28 05:32
)
如果没有 catch 是可以截到的
(空) (
没脾气2x
[371]
2006-04-28 05:33
)
可以拦截,但嵌套多层的内部Return漏网了。说不定可以这样解释:return和delphi里的Exit主义不同,C++的return功能更强
(空) (
王中王
[811]
2006-04-28 05:34
)
是,俺觉得你这个说法合理
(空) (
Fish
[413]
2006-04-28 05:38
)
看来只好避免中途 return 了。
(空) (
没脾气2x
[343]
2006-04-28 05:47
)
可是有时候不中途 return 会好麻烦啊
(空) (
没脾气2x
[411]
2006-04-28 05:50
)
是啊,要增加相当多的 if else之类的冬冬
(空) (
Fish
[594]
2006-04-28 05:56
)
偷偷的告诉你一声
(28字)
(
GoodHope
[416]
2006-04-28 06:02
)
不行,catch(...)就给收了
(空) (
王中王
[384]
2006-04-28 06:04
)
不能理解的异常应该继续抛出来啊
(12字)
(
GoodHope
[409]
2006-04-28 06:06
)
俺之前也考虑过throw一个自定义的异常,但是异常多了总不是好事,还是改流程吧
(空) (
Fish
[375]
2006-04-28 06:18
)
return 强在哪里?
(空) (
GoodHope
[430]
2006-04-28 06:01
)
可以把Finally跳掉
(6字)
(
王中王
[412]
2006-04-28 06:03
)
看来还是BCB里面的try...__finally处理方式不同,不知道为什么宝蓝自己搞了这个兼容delphi的非标准关键字,却不保持其行为一致
(空) (
Fish
[1023]
2006-04-28 06:04
)
delphi 没问题
(119字)
(
pcplayer
[388]
2006-04-28 05:53
)
Delphi当然没问题,这么用了N年了。
(空) (
GoodHope
[338]
2006-04-28 06:00
)
猴子不是用BDS2006么?帮俺测试一下里面带的BCB2006,看是否有这个情况?
(空) (
Fish
[460]
2006-04-28 06:05
)
应该一样的,这些算是C++的标准了吧。
(9字)
(
GoodHope
[396]
2006-04-28 06:08
)
靠,BS偷懒的人
(空) (
Fish
[370]
2006-04-28 06:16
)
我试过了,2006没有问题。
(24字)
(
王中王
[409]
2006-04-28 06:23
)
看来为了以后能偷懒,得升级了
(空) (
Fish
[374]
2006-04-28 06:29
)
升级引发更大的问题
(空) (
leejd
[378]
2006-04-28 06:37
)
欢迎光临本社区,您还没有登录,不能发贴子。请在
这里登录