try
写正常执行的语句
finally
写释放资源的语句
end;
这样写的好处是程序的可读性高。
当然也可以直接这样写
begin
正常执行的语句
释放资源的语句
.............
正常执行的语句
释放资源的语句
end;
写正常执行的语句
finally
写释放资源的语句
end;
这样写的好处是程序的可读性高。
当然也可以直接这样写
begin
正常执行的语句
释放资源的语句
.............
正常执行的语句
释放资源的语句
end;
解决方案 »
- 高手请进!报价单生成问题
- 关于Tadoquery控件连MS_Sql数据库出现“对象被打开”的错
- 怎樣在checklistbox里show ini文件里的關鍵字!!!
- 如何使主程序编译成带参数??在线等!!!!!!!!!1
- DBGrid通过DataSource连接ADOQuery,修改DBGrid中值会激发ADOQuery的什么事件?
- 求解
- 关于update数据库出现的问题,求教
- 我失业了,有哪位好心人帮帮我!本人万分感谢!!!!!!
- ☆☆高分求助☆☆在程序中怎样调用另一个程序?又怎么样知道那个程序运行结束了??
- 我写一个把图片存入数据库的小软件,但是在我把图片存入数据库后,再浏览时点确定就出错了。
- 有关delphi热门的网站有哪些?
- 几个小问题
2.内存不够会用虚拟内存
写程序应该多考虑各种可能,就这样,然后看多了后,会觉得它就是规范。@_@
try
//B区,这里使用前面申请的资源;如果在使用的过程中出现异常,则强制执行C区中的语句,以确保释放前面申请的资源
finally
//C区,这里释放前面申请的资源;
end;
在你的问题中,当窗体创建后,如果你在窗体的OnShow或OnActivate等事件中写有代码,那么当你执行Showmodal时,这些代码一旦出现异常,通过try..finally..end保证你创建的窗体能正常释放。
你的ShowModal不能保证没有问题的,只要你的OnShow有非法操作就会到Finally free你的资源,我认为try do sth (allocate objects)except show error end; free resource 够好些
当你一敲键盘,就想到try except的时候,自己就会找理由来圆自己的行为了,呵呵
try
frmModel.ShowModal;//以后可能有N个操作,有可能发生不可预料错误或异常,导致没有运行完预期制定的代码,有可能导致无法执行到FrmModel.free一步,但把它放在finally之后,FrmModel.free总会执行!finally
frmModel.free;
end;
frmModel.ShowModal;
finally
frmModel.free;这里释放前面申请的资源;不管发生异常与否,这的代码都要执行
end;
TRY
EXCEPT
你是不是更不清楚了?
该语句有选择的意味
如果TRY不可以
那么EXCEPT
//A区,这里申请了一个资源;如果资源申请申请出错,则系统异常,没有造成资源浪费
try
//B区,这里使用前面申请的资源;如果在使用的过程中出现异常,则强制执行C区中的语句,以确保释放前面申请的资源
finally
//C区,这里释放前面申请的资源;
end;关于A区就发生系统异常,那是否最好
try
//A区,这里申请了一个资源;如果资源申请申请出错,则系统异常,没有 造成资源浪费
try
//B区,这里使用前面申请的资源;如果在使用的过程中出现异常,则强制执行C区中的语句,以确保释放前面申请的资源
finally
//C区,这里释放前面申请的资源;
end;
except
showmessage('错误')
end;
这样再加一个try except比较好呢?可是一般书上在A区 .create时都不加的原来这个A区出错系统异常不会造成资源浪费直接就异常了啊,原来我以为A区出错资源就丢失了呢!!所以老想把A放到try finally里面。谢谢各位帮助,请hfyun(黑龙)继续发言,谢谢
try
frmModel.ShowModal
except
showmessage('窗体显示错误');
frmModel。free;
end;
当然有可能出现问题
您的意思是
try
//A区,这里申请了一个资源;如果资源申请申请出错,则系统异常,没有 造成资源浪费
try
//B区,这里使用前面申请的资源;如果在使用的过程中出现异常,则强制执行C区中的语句,以确保释放前面申请的资源
finally
//C区,这里释放前面申请的资源;
end;
except
showmessage('错误')
end;