- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于Delphi异常处理实现方法
基于Delphi异常处理实现方法
【摘 要】本文重点介绍了Delphi对异常处理的机制;针对程序运行过程中产生的异常情况,运用Delphi开发工具并结合实例介绍了异常处理机制在程序设计中对异常处理的实现方法。
【关键词】Delphi;异常处理;保护块;异常类
0 引言
软件无论在测试中,还是常规运行时,都不可避免会发生由于软件设计、编码或操作人员非法操作,或者是数据库、网络线路等软硬件错误而引发应用程序异常。在Delphi的集成开发环境(IDE)中提供了一个完善的内置调试器,可以帮助你发现大部分程序错误。但并不是所有的错误都可以被发现,而且当程序涉及到与外设的数据交换或操作外设,如要求用户输入、读写磁盘等时,错误的发生是程序无法控制的,如输入非法字符、磁盘不能读写等。这些情况不仅回导致应用程序异常终止而且可能引起系统的崩溃。针对这些问题,Delphi同时提供了一套强大的异常处理机制。巧妙地利用它,可以使你的程序更为强健,使用更为友好。现本人结合实际,详细讨论Delphi中异常处理及其实现方法。
1 Delphi异常处理机制
Delphi异常处理机制建立在保护块(Protected Blocks)的概念上。所谓保护块是用保留字try和end封装的一段代码。保护块的作用是当应用程序发生错误时自动创建一个相应的异常类(Exception)。程序可以捕获并处理这个异常类,以确保程序的正常结束以及资源的释放和数据不受破坏。如果程序不进行处理,则系统会自动提供一个消息框,告诉用户用处产生的原因,并终止程序的执行。
1.1 异常类
异常类是Delphi异常处理机制的核心,也是Delphi异常处理的主要特色。Delphi通过异常类Exception来实现异常处理机制。Exception类是其它所有异常类的基类,其它异常类均是Exception类的子类。Exception类定义在单元SysUtil中,定义如下(对于不常用的成员没有列出):
{SysUtil单元中}
Exception=class(Tobject)
Private
Fmessage:Pstring;
FhelpContext:Longint;
Function GetMessage:String;
Procedure SetMessage(const Value;String);
Public
constructor Create(const Msg: String);
constructor CreateFmt(const Msg: String; const Args:array of const);
…
destructor Destroy;override;
property HelpContext:Longint;
property Message:String;
property MessagePrt:Pstring;
end;
当然,用户也可以象定义其它类一样来定义自己的异常类。例如:type EmyException=Class(Exception);这样用户就定义了一个异常类。
1.2 Delphi异常处理
Delphi为每个应用程序提供了一个默认的异常处理程序处理异常,大多数异常是不明确异常,这样的处理可能并不符合用户的要求,因此Delphi提供了按照自己的需要进行异常处理的机制,即用try和end封装一段程序代码。其格式为:
try //try保护代码块
被保护语句
except //异常处理块
异常处理语句 //异常不发生,不处理
end;
或
try //try保护代码块
被保护语句
except //异常处理块
on do //捕获指定类型的异常对象,进行处理
on do //捕获指定类型的异常对象,进行处理
else
//缺省的异常处理代码
end;
例如用try-except语句处理被0除情况:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c:real;
begin
b:=strtofloat(edit1.Text);
c:=strtofloat(edit2.Text);
try
a:=b /c;
edit3.Text:=floattostr(a);
except
edit3.Text:=‘不能用0除’;
end;
end;
1.3 Delphi异
文档评论(0)