版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Delphi面向对象程序设计主 编 李俊平第七章 异常处理与程序调试技术 本章内容 异常的概念 异常的响应方法 自定义异常 程序调试方法Delphi面向对象程序设计第七章 异常处理与程序调试技术7.1 异常的概念所谓异常,是指程序在运行时遇到的一些无法预知,需要特别处理的状况。例如程序要打开一个不存在的文件、网络连接中断、操作数越界、装载一个不存在的类等问题。Delphi提供了一套缺省的自动异常处理机制, 即当程序发生错误后会自动退出当前运行的程序模式给出相块,并以对话框的形应的错误信息,但是并不会引起应用程序的终止。下一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.1
2、异常的概念Delphi的异常处理机制是建立在保护块的概念上的。保护块是用保留字try和end封装起来的一段代码。当应用程序发生错误时,系统会自动创建相应的异常类的对象,该异常对象通常包含了错误的相关信息。程序可以捕获并处理这个异常对象,如果程序中没有定义对该异常的处理,则系统会自动产生一个消息框来描述这个错误,并保证程序不会终止。下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.1 异常的概念在Delphi中,所有的异常类都派生自Exception 类,该类是在SysUtils单元中定义的,如果一个程序的Uses语句中包含了SysUtils单元,则运行中发生错误时就
3、会引发一个异常。需要注意的是,异常不同错误于,我们完全可以自己引发一个异常,如下面的语句:Raise Exception.Create(My Error);下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.2 异常的响应方法7.2.1 tryexceptendtryexceptend形成了一个异常响应保护块。正常情况下except后面的语句并不会被执行,而当一条或多条try块中的语句执行失败时,异常发生了,程序自动跳到except块中,进入异常响应处理模块中去执行。当异常被响应后异常类自动清除。下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技
4、术7.2 异常的响应方法7.2.2 tryexceptondoend该异常响应保护块通过使用ondo来响应不同类型的异常,其中on之后常的类型。如下面的例子:下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术var I,J,K:Integer; beginTryI:=StrToInt(Edit1.Text); J:=StrToInt(Edit2.Text); K:=I div J; Edit3.Text:=IntToStr(K);ExceptOn EDivByZero do ShowMessage(除数为0!);On EConvertError doShowMessag
5、e(数据类型错误!);end;end;下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.2 异常的响应方法7.2.3 tryfinallyend显示错误消息是异常处理的一个方面, 当错误发生时,还应该保证系统的稳定,如: 及时释放已经分配的资源,避免系统的等,这就可以采用tryfinally end结构来实现。Finally之后的语句无论如何都会被执行,因此可以用于资源保护。如下面的例子:下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术varP:Pointer; I,J:integer;BeginI:=0; GetMem(P,2048);J
6、:=5 div I; FreeMem(P,2048);End;下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术varP:Pointer; I,J:integer;BeginI:=0; GetMem(P,2048);TryJ:=5 div I; FinallyFreeMem(P,2048); End;End;下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.2 异常的响应方法7.2.4 资源保护与异常处理的结合发生异常时,既要保证资源释放,又要在当前程序块中处理它,就需要用tryexcept和tryfinally的嵌套如下面的例子:下一页上一
7、页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术var I,j,k:integer; P:Pointer;beginI:=0;J:=10; GetMem(P,4096);trytryK:=J div I; ShowMessage(K=+IntToStr(K);exceptShowMessage(Divide by zero); end;finally FreeMem(P,4096);ShowMessage(Memory has been Freed); end;end;下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.3 自定义异常自定义异常同定义新
8、的类相似, 只是Delphi中异常的基类是Exception类,因此, 自定义异常的语法通常如下:type异常类名=class(Exception)要引发该异常,可以使用如下方法:Raise 异常类对象名(参数);下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.4 程序调试方法7.4.1 程序中的错误程序中的错误基本上可以分成三类:语法错误、运行时错误和逻辑错误。语法错误:语句不符合语法规范。如:begin和end不匹配、句末漏掉分号、标识符未声明、数据类型不符等。运行时错误:程序通过编译,但执行时发生错误。如:试图打开一个不存在的文件、被0除等。程序执行到该语句
9、时, Delphi的集成调试环境会自动停止程序执行,并显示错误信息对话框。单击对话框中的OK按钮后,系统便回到源程序中出错的地方。逻辑错误:程序可以通过编译并运行,但结果和期望不同。下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.4 程序调试方法7.4.2 程序运行方式RUN:单击Run/Run菜单项或工具栏上的运行按钮或快捷键F9。这时,系统会自动编译该程序。如果程序中没有语法错误,则执行该程序。Compile:选择Project/Compile菜单项,编译程序会编译包括.dpr在内的全部改动过的文件,并生成.exe文件,但不会运行程序。如果程序中有语法错误,编
10、译程序就能找出来。Build:选择Project/Build菜单项,编译程序会编译项目中的所有文件,无论它们是否被改动。Project/Compile All Projects 和 Project/Build All Projects:在使用项目组的时候使用,编译项目组中的所有项目。下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.4 程序调试方法7.4.3 断点的使用断点必须设置在可执行语句上,程序运行到断点时会自动停下,回到调试监控模式, 此时断点处的语句还没有被执行。可以用单步执行的方式观测各变量的值,从而检查程序的出错点的位置。设置方法:用鼠标单击希望设断点
11、的行的左侧。下一页上一页返回Delphi面向对象程序设计第七章 异常处理与程序调试技术7.4 程序调试方法7.4.4 单步调试常用的单步调试方法如下:Trace Into:当程序运行到调用自定义函数、过程时, Trace Into方式会进入到子程序内部进行跟踪,并停留在子程序的第一行代码处。当程序执行到子程序的结束处时,就返回主程序中。但是,这种方法不会进入Delphi提供的库函数内部进行跟踪。使用方法是按F7键。Step Over:每次只执行一行程序,当遇到自定义函数或过程的调用时,不会进入函数进行进一步的跟踪,而是直接把函数执行完毕,再停在程序的下一行。如果我们能够确信自定义的函数没错时,使用Step Over方法比Trace
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宿州航空职业学院《病理学》2025-2026学年期末试卷
- 阜阳科技职业学院《房屋建筑与装饰工程估价》2025-2026学年期末试卷
- 阳光学院《临床输血学检验技术》2025-2026学年期末试卷
- 公考铁路常识试题及答案
- 福建农林大学《笔译》2025-2026学年期末试卷
- 有色金属加工质检员安全文化测试考核试卷含答案
- 火柴制造工安全实操评优考核试卷含答案
- 船体火工岗前岗中技能考核试卷含答案
- 心脏骤停后综合治疗指南对比2026
- 咨询行业精英之路-打造专业咨询师的全方位素质
- BCG -2026效率之后中国医药创新的价值攀登研究报告
- 2026届贵州贵阳高三适应性考试语文试卷+答案
- 元代美术题库及答案大全
- DB32∕T 5279-2025 档案智能开放审核工作规范
- 山东省济南市2026年中考语文模拟试卷四套附答案
- 2026国家核应急响应技术支持中心招聘3人笔试参考题库及答案解析
- 2026年春江酒城嘉苑“楼上养老 楼下医疗”CCRC社区运营模式解析
- GB/T 13967-2026全宗管理规则
- 雇佣关系培训
- 2025年工程类事业编考试题目及答案
- 2025年水利工程质量检测与管理规范
评论
0/150
提交评论