try catch的使用问题

御剑逍遥恪 2009-02-16 05:14:52
FreeForm = new TFreeForm(NULL);
try
{
执行语句;
delete FreeForm;
}

catch(...)
{
MessageBox(NULL,"发生错误!","提示",MB_OK);
delete FreeForm;
}
当发生异常的时候MessageBox执行了,为什么catch中的delete FreeForm没有执行,若要在发生异常catch的时候执行delete FreeForm 该怎么做??
...全文
140 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
痞子酷 2009-02-17
  • 打赏
  • 举报
回复
FreeForm = new TFreeForm(NULL);
try{
try {
执行语句;
} catch(...)
{
MessageBox(NULL,"发生错误!","提示",MB_OK);
}
}
__finally
{
delete FreeForm;
}
我不懂电脑 2009-02-17
  • 打赏
  • 举报
回复
回答很快。
御剑逍遥恪 2009-02-17
  • 打赏
  • 举报
回复
问题解决了!
发现并不是FreeForm的问题,是try里面另一个函数指针的问题!感谢大家
8楼贴出的两种方法结果是一样滴~~ 是不是__finally很多余,有米有人举出一个发挥__finally的方法!!
cccckaiji 2009-02-17
  • 打赏
  • 举报
回复
推荐8楼的后面部分。
xjq2003 2009-02-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xabcxyz 的回复:]
FreeForm = new TFreeForm(NULL);
try{
try {
执行语句;
} catch(...) {
MessageBox(NULL,"发生错误!","提示",MB_OK);
}} __finally{
delete FreeForm;
}
[/Quote]
正解,如果觉得__finally不好,可以

FreeForm = new TFreeForm(NULL);

try {
执行语句;
} catch(...) {
MessageBox(NULL,"发生错误!","提示",MB_OK);
}
delete FreeForm;


ydlchina 2009-02-17
  • 打赏
  • 举报
回复
在调试环境即使你发生了异常也不会得到提示,只有在执行exe文件时发生异常才会得到提示。
hemiya 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yumikoo 的回复:]
try里面已经执行过了
[/Quote]
在try里面的delete FreeForm; 如果发生异常不一定执行,要看在哪里抛的异常。

[Quote=引用 3 楼 yumikoo 的回复:]
我需要做的就是不管发不发生异常 FreeForm指针 最后一定要被释放~~~
[/Quote]
可以使用boost里面的智能指针scoped_ptr(推荐这个),或者使用stl里面的auto_ptr。

[Quote=引用 5 楼 yumikoo 的回复:]
FreeForm = new TFreeForm(NULL);
try{
try {
执行语句;
} catch(...) {
MessageBox(NULL,"发生错误!","提示",MB_OK);
}} __finally{
delete FreeForm;
}
[/Quote]
__finally不太符合C++标准的东西。
xabcxyz 2009-02-16
  • 打赏
  • 举报
回复
FreeForm = new TFreeForm(NULL);
try{
try {
执行语句;
} catch(...) {
MessageBox(NULL,"发生错误!","提示",MB_OK);
}} __finally{
delete FreeForm;
}
yumikoo 2009-02-16
  • 打赏
  • 举报
回复
那把del放在catch执行完之后的外面。
御剑逍遥恪 2009-02-16
  • 打赏
  • 举报
回复
我需要做的就是不管发不发生异常 FreeForm指针 最后一定要被释放~~~
御剑逍遥恪 2009-02-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yumikoo 的回复:]
try里面已经执行过了
[/Quote]
发生异常的时候 try里面的delete FreeForm就没有执行了! 这是怎么回事 ??
yumikoo 2009-02-16
  • 打赏
  • 举报
回复
try里面已经执行过了

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧