欢迎来到天天文库
浏览记录
ID:21041562
大小:429.00 KB
页数:55页
时间:2018-10-19
《delphi异常处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章Delphi7异常处理了解什么是异常和Delphi7中提供的异常类掌握Delphi7环境下自定义异常的方法和异常处理的语法结构与实现异常什么是异常?程序开发过程中,有编译期错误和运行期错误,编译期错误很容易发现,而运行期错误(逻辑错误和异常)往往很难预料。为了程序的稳定性和可靠性,就需要对程序异常处理和保护。异常:理解为一种特殊的事件,该事件发生时,程序的正常执行将被打断。异常由程序导致的不正常情况是错误而不是异常,程序错误与异常不是相同的概念。异常是为方便用户报告错误并处理错误而创建的机制,一般是由操
2、作系统完成的。运行期错误处理软件开发过程中,程序员必须提供适度的方式来处理不可避免的错误。一般方法如下:1传统方法2使用异常进行错误处理传统方法在Pascal早期版本中,程序员必须借助编译器开关和状态变量去检测和处理存在的错误。{$I-}{此编译器指令关闭I/O检测}Assign(InFile,InputName);Reset(InFile);{$I+}{此编译器指令恢复I/O检测}IfIOResult<>0then{错误处理代码};使用异常进行错误处理结构化异常处理是Delphi语言内建的特性。为我们处理异
3、常提供了方便。处理异常有两方面:1异常处理可确保适当地恢复在应用程序中分配或改变的任何资源。2结构化异常处理为开发人员提供了一种一致的处理各种类型运行期错误的方式Delphi7异常处理机制异常处理的基本思想是通过提供规范方式处理软,硬件错误的能力,使程序更加健壮。异常处理可以将处理错误的代码与正常的逻辑处理代码相分离。Delphi缺省的方式是在应用程序收到异常之前捕获异常。IDE会给出一个“预警”对话框,以指明应用程序将要产生异常。Delphi7异常处理机制异常处理机制是一种程序设计安全策略,它是建立在保护块
4、思想上,通过try和end语句块对代码的封装确保在程序发生异常时,程序能够正常运行或释放所占用的资源。Delphi7异常处理机制传统程序设计中,用如下的伪代码方法来检查和处理程序错误:执行一个任务If前一个任务未能正确执行执行错误处理执行下一个任务If前一个任务未能正确执行执行错误处理……Delphi7异常处理机制例;tryAge:=StrToInt(Edit1.Text);ShowMessage(Format('生于%d年',[YearOf(Now)-Age]));exceptonEConvertError
5、doshowmessage('输入编辑框的不是一个有效的数字!');onERangeErrordoshowmessage('输入编辑框的年龄值太大!');end;异常类Delphi7根据异常类型定义了相应的异常类。所有异常类的基类都是Exception类。Delphi7内置了大量的异常类,用户也可以通过Exception类自定义异常类。异常类记住异常类的要点:1异常类是响应不同异常现象的入口。2熟悉异常类的层次结构。Exception异常类Exception是所有异常类的基类,它并不是以‘T’开头,而是以‘E
6、’开头,它的派生类也是以‘E’开头的。Exception类定义于SysUtils单元中。它的定义见书43页Exception类最常用的方法是Create方法:ConstructorCreate(constMsg:string);Exception异常类例:Exception.Create(‘我自己创建的异常!’);该方法用于创建一个异常类的实例,也可以显示错误信息,也可直接用这个方法提交一个异常raiseException.Create(‘我抛出的异常!’);Exception异常类例:tryraiseExc
7、eption.Create('我抛出的异常!');exceptonE:Exceptiondoshowmessage(‘异常类名称:’+E.ClassName+#13#10+'异常信息:'+E.Message);end;Delphi7内置的异常类Delphi7根据异常现象的类型定义了相应的异常类,这些异常类又称为Delphi7内置的异常类。具体分为运行时库异常类,对象异常类和组件异常类三大类。运行时库异常类(RTL)运行时库异常类可分为以下几种:1整数计算异常2浮点计算异常3硬件异常4堆异常5输入输出异常(I/
8、O异常)6字符转换异常7类型转换异常8哑异常整数计算异常EIntError整数计算异常(基类)EDivByZero整数除0溢处EIntOverFlow整数溢出ERangeError整数越界浮点计算异常EMathError浮点计算异常(基类)EInvalidOp无效浮点操作指令Eoverflow浮点操作上溢Eunderflow浮点操作下溢EZeroDivide浮点计算除0硬件异常EProcessorE
此文档下载收益归作者所有