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

ooolinux 2017-12-19 05:07:33
Delphi通常哪些情况需要用try语句?
比如分配内存?文件I/O?
有没有什么规律呢?或者一般的做法呢?
...全文
3228 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。
目录 : 第0章 认识Delphi 0-1 前言 0-2 Delphi简介 0-3 进入Delphi7 0-4 退出Delphi 第1章 常用的窗口工具 1-1 窗体(Form) 1-2 代码编辑器(Code Editor) 1-3 代码浏览器(Code Explorer) 1-4 组件面板(Componet Palette) 1-5 对象检视器(Object Inspector) 1-6 快捷工具栏(Speed Menu) 1-7 项目管理器(Project Manager) 1-8 桌面工具栏(Desktops Tollbar) 1-9 图像编辑器(Image Editor) 1-10 对象浏览器(Object TreeView) 1-11 关联选项卡(Digram Page) 第2章 常用的菜单 2-1 File菜单 2-2 Edit菜单 2-3 Search菜单 2-4 View菜单 2-5 Project菜单 2-6 Run菜单 2-7 Tools菜单 2-8 Windows菜单 第3章 集成开发环境的改变 3-1 Delphi集成开民环境介绍 3-2 操作菜单方面的改进 3-2-1 外面方面的改变 3-2-2 内容方面的改变 3-3 对象检视器方面的改进 3-4 组件面板的改进 3-5 代码编辑器的改进 3-6 设计陈列室的改进 3-7 编译信息的显示 3-8 调试器方面的改进 3-8-1 Watch List改进 3-8-2 Debugger选项的改进 3-8-3 Run Parameters对话框的改进 第4章 Delphi Object Pascal的初步印象 4-1 面向对象程序概论 4-1-1 类 4-1-2 对象 4-1-3 继承 4-1-4 封装 4-1-5 信息 4-2 Delphi项目结构及窗体的建立 4-2-1 GUI模式的项目 4-2-2 Console模式的项目 4-3 Object Pascal程序结构 4-3-1 项目程序(Program)的结构 4-3-2 单元程序(Unit)的结构 4-4 如何完成一个简单的窗体程序 第5章 简单的常用指令介绍 5-1 TLabel类对象 5-1-1 Caption属性 5-2 TButton类对象 5-2-1 Caption属笥 5-2-2 OnClick事件 5-3 TEdit类对象 5-4 TCanvas类对象 5-5 Showmessage函数 5-6 InputBox函数 5-7 MessageDlg函灵敏 第6章 Delphi与Object Pascal程序的基本概念 6-1 Object Pascal Program程序结构与Delphi项目结构的关系 6-1-1 标头(Heading) 6-1-2 Uses子句 6-1-3 编译指令(Compiler directive) 6-1-4 源代码区(begin end) 6-2 Unit程序结构与窗体的关系 6-2-1 Unit代码结构 6-2-2 语句(Statement) 6-2-3 Unit间Use的状况 6-3 数据类型与定义变量 6-3-1 数据类型概论 6-3-2 不需要使用type声明的数据类型 6-3-3 必须使用type声明的数据类型 6-3-4 定义变量 6-3-5 变量的作用域 6-3-6 定义常量 6-3-7 变量的类型转换(Typecast) 6-4 Object Pascal的运算符(Operator) 6-4-1 设置运算符(assign Operator) 6-4-2 算数运算符(Arithmetic Operator) 6-4-3 关系运算符(Relational Operator) 6-4-4 布尔运算符 6-4-5 集合运算符 6-4-6 字符串运算符 6-4-7 位逻辑运算符 6-4-8 运算符优先级 6-5 流程控制 6-5-1 语句的基本概念 6-5-2 表达式语句(Expression-Statement) 6-5-3 流程控制语句 6-5-4 可视化程序与嵌套程序 6-6 数组与指针 6-6-1 数组类型 6-6-2 指针类型 6-6-3 浅谈指针与数据结构 6-7 程序与函数(Procedures and Functions) 6-7-1 函数的意义与优点 6-7-2 函数的分类与效用 6-7-3 自定义函数使用方法概述 6-7-4 函数的声明、定义及其实现 6-7-5 参数传递方式 6-7-6 声明修

828

社区成员

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

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