Delphi通常哪些情况需要用try语句?

ooolinux 2017-12-19 05:07:33
Delphi通常哪些情况需要用try语句?
比如分配内存?文件I/O?
有没有什么规律呢?或者一般的做法呢?
...全文
3223 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
sanyuan35 2018-03-28
  • 打赏
  • 举报
回复
学习了~~~~~~
ooolinux 2018-03-02
  • 打赏
  • 举报
回复
@cqzjb ok
cqzjb 2018-03-01
  • 打赏
  • 举报
回复
在程序容易发生异常的代码处使用try,这个时候是否需要抛出异常,就看你自己的try怎么写而已了
ooolinux 2018-02-28
  • 打赏
  • 举报
回复
@lyhoo163 @七羽Y 这个可以有。
七羽Y 2018-02-28
  • 打赏
  • 举报
回复
引用 21 楼 lyhoo163 的回复:
try语句还有一个功能,就是出错显示自己的提示信息。
赞成楼上说法,我觉着这个作用很重要,经常在写程序的时候运行出错想显示自己的提示信息,用try就行了,如果不用,就是系统提示信息,这种提示信息一般人可能都看不懂
lyhoo163 2018-02-28
  • 打赏
  • 举报
回复
try语句还有一个功能,就是出错显示自己的提示信息。
ooolinux 2018-02-27
  • 打赏
  • 举报
回复
@东南西北风 好的,语法都知道。
东南西北风 2018-02-27
  • 打赏
  • 举报
回复
try {SomeCode} except//出错的时候执行, Except有特定的错误类型 {SomeCode} end; try {SomeCode} finally//无论如何都强制执行 {SomeCode} end;
ooolinux 2018-02-06
  • 打赏
  • 举报
回复
@DelphixpeFan 好的
DelphixpeFan 2018-02-06
  • 打赏
  • 举报
回复
个人经验,try有两个作用,1、改善用户体验;2、养成良好书写习惯;如果你的程序很容易报错,又不想因为一个小的报错导致程序崩溃,需要用户从头来过,或者,你根本就不想让用户看到这个错误,就用try except,事实上大的错误,用了它和没用它区别不大,象读写内存错误,即使捕获到了,你的程序也是要崩的,这种错误你是一定要修正的;我一般只用在网络连接判断上,不用的话,出现网络中断,它会把想连接的IP地址都显示出来,很不亲民,加上这个捕获到了,就弹一个“网络连接失败,请检查网络”的提示就很好了。查错还是用断点跟踪来得直观,再不行写个showmessage在会报错的地方,把预期值显示出来比较。我们用try finally一般都是用来释放资源,如果程序很稳定,只要你记得住写上释放的代码,用不用问题不大,但有了这个标识在,你想忘记写都难,而且因为有缩进,检查起来很方便;
Bone_storm 2018-01-29
  • 打赏
  • 举报
回复
学习了
ooolinux 2018-01-28
  • 打赏
  • 举报
回复
@chenlei 问题就是,哪些类型的代码是可能出现异常的,比如LoadFrom、SaveTo等等哪些类型的?
chenlei 2018-01-27
  • 打赏
  • 举报
回复
可能出现异常的代码都应该用try捕获异常。
ooolinux 2017-12-31
  • 打赏
  • 举报
回复
@john_sheep 好的
约翰羊 2017-12-26
  • 打赏
  • 举报
回复
一般情况下是一些比较严重,不可预料,会导致程序异常中止的情况。 捕获异常占资源,不能多用,不能不用,关键的时候用。
ooolinux 2017-12-25
  • 打赏
  • 举报
回复
引用 10 楼 DelphiGuy 的回复:
比如graphics.pas procedure TGraphic.LoadFromFile(const Filename: string); var Stream: TStream; begin Stream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite); try LoadFromStream(Stream); finally Stream.Free; end; end;
LoadFromStream,其它有没有常用的哪些类别的方法一般也要try呢?
  • 打赏
  • 举报
回复
比如graphics.pas procedure TGraphic.LoadFromFile(const Filename: string); var Stream: TStream; begin Stream := TFileStream.Create(Filename, fmOpenRead or fmShareDenyWrite); try LoadFromStream(Stream); finally Stream.Free; end; end;
ooolinux 2017-12-25
  • 打赏
  • 举报
回复
谢谢大家的回答 有没有哪些种类的方法,比如LoadFrom、SaveTo之类是应该用try呢?有没有常用的哪些类别的情况呢?
SupermanTm 2017-12-20
  • 打赏
  • 举报
回复
对“异常”的捕获和处理通常有两种方案 1、先做检查(定义域、环境条件等),保证合乎调用条件再调用; 2、先调用,在程序执行过程中捕获异常并响应。 通常而言,尽量采用第一种方案,这样的可靠性和效率都好,但有些情况(其实是很多的情况)下是不能这么简单去检查的,因为在处理的过程中又会有新的异常情况,这就需要采用第二种方案了,一般的用法是 try {不假定异常的程序段落} except {上述代码发生异常时的处理方法} end; 另一种情况,就是确保一些关键资源的释放以及关键代码的执行,譬如你在某个运算里请求了内存,而运算本身是可能出现异常的(譬如说出现除数为0),那无论如何,你请求的内存必须能释放(否则就造成内存泄漏,系统迟早完蛋),这时候就应该加入 try...finally...end; 段落,很简单的例子: sl:= TStringList.Create; try sl.LoadFromFile(sFileName); for I:= 0 to sl.Count - 1 do begin ...... end; finally sl.Free; end; 上述段落里,for 循环对该文件的每一行操作,但这个操作本身可能出现异常,但不论怎么样,最终sl的字符串表资源是一定能释放的。
zbdzjx 2017-12-20
  • 打赏
  • 举报
回复
之前用Delphi时,很少用try语句。只有当不需要提示错误时,才会用。
加载更多回复(6)
Delphi 跳出循环的几种方法Delphi 跳出循环的几种方法 我常用的几种方法 希望大家看看 那个是大家常用的而且比较不错的 以下是引用片段: Delphi中break,exit,abort跳出循环的比较 exit: 退出函数体 abort: 遇到异常,安静处理,就是不显示不提示 break: 退出当前循环体,包括for ,while, repeat等循环体 continue: 结束循环内的本次处理,继续从循环体的开始位置继续执行 Exit 是跳出当前代码块,也就是当前函数,跳出后是要继续向下执行的(如果有后续代码)。 Abort 是从 EAbort 过来的,可以激发 exception,其实质就是 Abort = RaiseException(),是一个不出现对话框的异常。所以 Abort 的行为和异常是一样的,其代码执行顺序也是follow异常的流程。 例如: try (1) //执行了 abort; (2) //不执行 exception (3) //执行了 end; 用 Abort 能够执行 exception 里边的代码,但是如果用 Exit,就直接离开,不管 exception。 delphi中表示跳出的有break,exit,abort。 【break】 离开循环 只能放在循环中 【exit】 跳出本模块(过程和函数),放在循环中是跳出循环在所在的模块。 【abort】 中止程序的运行,产生不报错的异常信息。跳出祖先模块。和【exit】的区别是 procedure p1; begin p2; p3; end; procedure p2; begin abort; //exit; end; procedure p3; begin //showmessage().. end; 如果用 Abort,则执行不到 P3,如果用 Exit 就能够执行到 P3。

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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