分享

C++怎么没有try finally 这样的块啊.

 quasiceo 2014-01-18

C++怎么没有try finally 这样的块啊. [问题点数:0分]

foxnt
foxnt
foxnt
等级:Blank
结帖率:100%
楼主 发表于: 2003-05-16 10:45:03
写起来很麻烦的啊.各位是怎么解决的?
分享到: 更多 0
回复次数:21
arfi
arfi
arfi
等级:Blank
#1 得分:0 回复于: 2003-05-16 10:50:02
我见有人写过
__try  __finally
你试试看。可惜没看懂。
foxnt
foxnt
foxnt
等级:Blank
#2 得分:0 回复于: 2003-05-16 11:00:29
那个是结构化异常用的哦.并且在try里不能包含类的调用. 不好用.:(
DanielWYO
DanielWYO
DanielWYO
等级:Blank
#3 得分:0 回复于: 2003-05-16 11:12:19
天啊!

那是BCB里的啊.

C++里面 没有的
finix
finix
finix
等级:Blank
#4 得分:0 回复于: 2003-05-16 11:37:26
天啊!
那是WINDOWS的东西阿
:)
Cybergate
Cybergate
Cybergate
等级:Blank
#5 得分:0 回复于: 2003-05-16 13:04:32
我以前听说__try  __finally不像try那样支持对象自动析构

foxnt
foxnt
foxnt
等级:Blank
#6 得分:0 回复于: 2003-05-16 15:43:11
没有人知道该怎么解决吗
dengfz
dengfz
dengfz
等级:Blank
#7 得分:0 回复于: 2003-05-16 15:59:27
SEH
programmer200x
programmer200x
programmer200x
等级:Blank
#8 得分:0 回复于: 2003-05-16 16:06:29
这些都是异常处理的东东,你可以看看c++异常处理这一块。
foxnt
foxnt
foxnt
等级:Blank
#9 得分:0 回复于: 2003-05-16 16:33:31
楼上说的话等于没说. :(
J2eeLearner
J2eeLearner
J2eeLearner
等级:Blank
#10 得分:0 回复于: 2003-05-16 16:48:58
标准C++没有!
不过你可以 把一些内容封装到一个对象的析构函数里面,
try
{
  FinallyClass Object
}
catch(...)
{}

无论是否发生异常,都要调用object的析构函数!这就和你要的finnally功能差不多了!
Cybergate
Cybergate
Cybergate
等级:Blank
#11 得分:0 回复于: 2003-05-16 18:05:40
楼上的说得好!请问这是哪本书上介绍的,还是你发明的?
realdreamer
realdreamer
realdreamer
等级:Blank
#12 得分:0 回复于: 2003-05-16 18:15:17
c++ 标准的确没有. 


用好 smart pointer ,也可祢补一些没有 finally 的不足. 


另外,__try __finally __exception 是 windows 的SEH(结构化异常处理)不支持 c++对象的析构,使用时要千万注意:)
foxnt
foxnt
foxnt
等级:Blank
#13 得分:0 回复于: 2003-05-17 11:57:27
突然想到,如果在这个问题上使用GOTO语句,是否会比较好点呢?:)
nanyu
nanyu
南郁
等级:Blank
#14 得分:0 回复于: 2003-05-17 12:25:37
__finally 是BCB的扩展。标准C++应没有。
pazee
pazee
pazee
等级:Blank
#15 得分:0 回复于: 2003-05-17 13:04:59
try
{
  A
}
finally 
{
  B
}
可以转化为

try 
{
  A
}
except(...)
{}
B

所以这个try...finally可以没有,
foxnt
foxnt
foxnt
等级:Blank
#16 得分:0 回复于: 2003-05-17 13:44:39
楼上的,我要是在TRY里面写个return,你就完蛋了.
Meyer
Meyer
Meyer
等级:Blank
#17 得分:0 回复于: 2003-05-17 16:37:04
VC也有 fanally的
但这不是标准C++的要求,只能是编译器的扩展
对如,fanally该做的事情,C++有构造和析构来处理
Meyer
Meyer
Meyer
等级:Blank
#18 得分:0 回复于: 2003-05-17 16:37:24
finally
dingyy
dingyy
dingyy
等级:Blank
#19 得分:0 回复于: 2003-05-19 10:29:52
我觉得try catch 和try finally
是一致的,你直接跟在后面就ok 了
pazee
pazee
pazee
等级:Blank
#20 得分:0 回复于: 2003-05-19 19:57:51
c++ 标准的的确没这东西,
foxnt 说的对,
用 try...catch... 又不能用 结构化跳转语句,类似retrun, continue都是个危险,更甭说 ex

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多