delphi try except end的使用

younerest 2011-11-22 03:20:16
请教大虾们个问题,delphi中的异常处理try except end;try finally end。一般在什么情况下使用。惭愧啊,学了几个月了还不是很清楚哪些地方需要加上异常处理语句。假如有一个操作数据库的方法,有一两百行代码,方法开头写try,然后再程序结束的时候写except end,这样是否可以。有时候一个过程中实现好几个功能,根本不知道try except end要放在哪里,也不知道什么时候该用try except end语句。向大虾们请教下经验。
...全文
454 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱蹄子的羊头 2011-11-23
  • 打赏
  • 举报
回复
凡是写 Free的地方都用上就对了.


另外,所有地方都写上 except 也就对了.

再多下几个断言神马的. 只要你不怕麻烦
andylist 2011-11-23
  • 打赏
  • 举报
回复
TRY

FINALLY

END用于创建资源,最后释放的
TRY

EXCEPT
END用于偿试执行操作,如果中途出现错误就抛出异常的.
kaikai_kk 2011-11-22
  • 打赏
  • 举报
回复
不清楚,就全部包括在里面.
iDeputy 2011-11-22
  • 打赏
  • 举报
回复
不清楚的话,就整个包含好了
younerest 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 funxu 的回复:]
好习惯是一般需要free的地方都加上
另外try except end还可以用来对抛出的异常进行补救防止程序崩溃
[/Quote]
同上,不知道哪些地方会抛出异常
younerest 2011-11-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 adslan 的回复:]
try finally end 一般用来释放资源用的
try except end 放在一些容易抛出异常代码的地方 用来显示或屏蔽错误提示
[/Quote]
我现在是不知道哪些地方容易抛出异常,什么时候会抛出异常
funxu 2011-11-22
  • 打赏
  • 举报
回复
好习惯是一般需要free的地方都加上
另外try except end还可以用来对抛出的异常进行补救防止程序崩溃
ADSLAN 2011-11-22
  • 打赏
  • 举报
回复
try finally end 一般用来释放资源用的
try except end 放在一些容易抛出异常代码的地方 用来显示或屏蔽错误提示
一; delphi 快速导出excel uses ComObj,clipbrd; function ToExcel(sfilename:string; ADOQuery:TADOQuery):boolean; const xlNormal=-4143; var y : integer; tsList : TStringList; s,filename :string; aSheet :Variant; excel :OleVariant; savedialog :tsavedialog; begin Result := true; try excel:=CreateOleObject('Excel.Application'); excel.workbooks.add; except //screen.cursor:=crDefault; showmessage('无法调用Excel!'); exit; end; savedialog:=tsavedialog.Create(nil); savedialog.FileName:=sfilename; //存入文件 savedialog.Filter:='Excel文件(*.xls)|*.xls'; if savedialog.Execute then begin if FileExists(savedialog.FileName) then try if application.messagebox('该文件已经存在,要覆盖吗?','询问',mb_yesno+mb_iconquestion)=idyes then DeleteFile(PChar(savedialog.FileName)) else begin Excel.Quit; savedialog.free; //screen.cursor:=crDefault; Exit; end; except Excel.Quit; savedialog.free; screen.cursor:=crDefault; Exit; end; filename:=savedialog.FileName; end; savedialog.free; if filename='' then begin result:=true; Excel.Quit; //screen.cursor:=crDefault; exit; end; aSheet:=excel.Worksheets.Item[1]; tsList:=TStringList.Create; //tsList.Add('查询结果'); //加入标题 s:=''; //加入字段名 for y := 0 to adoquery.fieldCount - 1 do begin s:=s+adoQuery.Fields.Fields[y].FieldName+#9 ; Application.ProcessMessages; end; tsList.Add(s); try try ADOQuery.First; While Not ADOQuery.Eof do begin s:=''; for y:=0 to ADOQuery.FieldCount-1 do begin s:=s+ADOQuery.Fields[y].AsString+#9; Application.ProcessMessages; end; tsList.Add(s); ADOQuery.next; end; Clipboard.AsText:=tsList.Text; except result:=false; end; finally tsList.Free; end; aSheet.Paste; 。。。。。。

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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