Delphi教程—程序异常处理与调试技术.pptxVIP

Delphi教程—程序异常处理与调试技术.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Delphi教程;第6章 程序异常处理与调试技术;6.1 异常处理的目的;异常处理,可以说是预防程序执行时发生异常而中断的一道防线,通过异常处理可以设法让程序避开异常的发生,不让它异常中断;或者在中断程序前,对数据做适当的处置,而不致丢失重要的数据。;1.exception属性;(2)Exception.Message属性该属性的定义如下:;(2)Exception.CreateFmt方法该方法的定义格式如下:;该方法产生一个带有一条简单提示信息和上下文帮助序列号的提示对话框。其中Msg参数包含了显示在异常对话框中的运行错误信息。AhelpContext参数包含一个限定异常错误信息上下文帮助序列号。 6.2.1 Delphi内建的异常类 Delphi内建的异常类有很多,但基本上各种异常类都是继承自Exception类,而 Exception类则继承自TObject类,它们全都 定义于【Sysutils】这个资源文件里,然而异常类并不同于一般的类,因此Delphi内建立 异常类其标识符的第一个字母都是“E”,如此我们很容易就能辨认出此种类。;6.2.2自定义异常类 虽然Delphi内建的异常类有很多,但是这些类不见得完全符合我们开发程序的需求,这时我们可以自定义一个异常类,然而异常类和一般的类的自定义有些细微的差别,它必须继承内建类。 事实上,自定义的异常类必须继承内建的 Exception类,或者继承Exception的某个子类才行。除此之外,自定义异常类的语法和自定义一般类的语法并没有不同。;6.3触发异常的方法;不过程序系统所作的只是一般的处理,通常仅是避开执行会发生异常的程序代码,而 不会排除掉异常发生的原因。故若保持原来 的状态再做同样的执行操作,仍旧会触及同 样的异常,却无法执行下一步的程序。因此 为了让程序执行更顺畅,并且让用户更容易 使用我们所开发的应用程序。即使是程序系 统自动触发的异常,我们也应该主动去处理,设法去除导致异常的原因。或者给予用户更 明确,更人性化的提示,尽量不要让用户感 到任何操怍上的困难,并且避免异常重复发 生而浪费不必要的时间。;6.3.2使用raise指令触发;由于Delphi在程序设计时,提供了调试器(Debugger),因此当程序执行时若发生异常状况,调试器将发挥功能,让程序在异常发生点,并且??示调试的方法,方便找出问题所在。然而这样程序就无法如实展现异常处理的情况,而且这个应用程序若不在 Delphi环境下执行,也不会有调试器存在。因此在设计异常处理程序时,点选【Tools】| 【Debugger Options】|【General】选项, 然后取消【Integrated debugging】选项,这样才能看到异常处理的效果。 6.4.1 Try…Finally…End结构;只需要触发异常,程序系统将自动捕捉被触发的异常,;Try…Fianally…end 的一般结构为:;触发的异常。而无论使用Raise指令,还是由程序系统自动触发的异常,程序系统都会在 其后“Finally…End”区执行完了时,自动捕捉被触发的异常,并且将异常信息显示出来。 2.Finally…End区中的语句 本区也可以有多个语句,但是不要在本区使用Raise指令,因为在上一区中由程序系统或 raise指令触发的异常,其异常实体将存在本区,并在End关键字前显示异常信息。倘若 在本区使用Raise指令,则不管在 “Try…Finally”是否有异常触发,都会执行 Raise指令,并且显示异常信息,请勿在这个区区域使用Raise指令。;6.4.2 try…except…end结构 使用try…except…end语法来处理异常时,可自行捕捉异常,然后根据异常的类型不同,对异常做不同的处理操怍。 当“try…except”区内没有异常被触发时。此区程序执行完之后,会跳过 “execpt…end”区内的程序代码而离开 “try…except…end”区域,直接执行其后的程序代码。反之,若“try…except”区内有异常被触发,则在触发异常的情况下,就立即由异常产生点跳出“try…except”区,转而执行“except…end”区的程序。;Try…Except…end 的一般结构为:;包括由程序系统自动触发以及程序员使用 raise指令去触发的异常,故在本区可根据状况条件来使用Raise指令。然而在本区使用 raise指令,或者由程序系统自动触发某些异常时,程序系统并不一定会自动处理这些异常,这时程序就有可能会异常中断,因此需要“Except…End”区中捕捉异常,并且对异常作适当处理;也可仿照 “Try…Finally…End”语法,在 “Except…End”区对“Try…Except”区内被触发的异常作

文档评论(0)

186****6581 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档