当前位置:七道奇文章资讯编程技术Delphi编程
日期:2011-03-20 17:55:00  来源:本站整理

第十二章 非常处理与程序调试(一)[Delphi编程]

赞助商链接



  本文“第十二章 非常处理与程序调试(一)[Delphi编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

  在利用程序开辟中若何检测、处理程序的运行错误是一个很重要的问题.在 Delphi 的集成开辟环境( IDE )中供应了一个完善的内置调试器,可以帮忙你发现大部份程序错误.但并非全部的错误都可以被发现,并且当程序触及到与外设的数据交换或操作外设,如要求用户输入、读写磁盘等时,错误的发生是程序无法掌握的,如输入不法字符、磁盘不能读写等.这些情形不但会招致利用程序非常中止并且大概惹起系统的崩溃.针对这些问题,Delphi同时供应了一套强盛的非常处理机制.巧妙地操纵它,可以使你的程序更为健旺,利用更为友好.

  固然Delphi为利用程序供应了一套缺省的自动非常处理机制,即当前模块发生错误撤退出当前模块并给出错误信息,而并不当即惹起利用程序的中止.但当利用程序履行的历程性很强时,仅仅操纵这种办法是不够的,并且很简单招致程序履行的不可猜测性. 

12.1 Delphi非常处理机制与非常类 

  Delphi非常处理机制成立在保护块(Protected Blocks)的概念上.所谓保护块是用保存字tryend封装的一段代码.保护块的作用是当利用程序发生错误时自动成立一个呼应的非常类(Exception).程序可以捕捉并处理这个非常类,以确保程序的正常完毕以及资源的释放和数据不受破坏.假如程序不举行处理,则系统会自动供应一个消息框.

  非常类是Delphi非常处理机制的核心,也是Delphi非常处理的主要特点.下面我们对非常类的概念和体系举行具体的介绍.

  Delphi供应的全部非常类都是类Exception的子类.用户也可以从Exception派生一个自定义的非常类.

  Exception类的定义以下,关于不常用的成员没有列出.  

{SysUtils 单元中}

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 MessagePtr: PString;

end; 

Exception的一系列构造函数中最重要的参数是显示的错误信息.而数据成员中最重要的也是可被引用的消息字符串(message,messagePtr). 这些信息辨别对自定义一个非常类和处理一个非常类有重要作用.

  Delphi供应了一个很宏大的非常类体系,这些非常类几近触及到编程的各个方面.从大的方面我们可以把非常类分为运行时间库非常、对象非常、部件非常三类.下面我们辨别举行介绍. 

12.1.1 运行时间库非常类(RTL Exception) 

  运行时间库非常可以分为七类,它们都定义在SysUtils库单元中. 

12.1.1.1 I/O非常 

  I/O非常类EInOutError是在程序运行中试图对文件或外设举行操作失利后产生的,它从Exception派生后增添了一个公有数据成员ErrorCode,用于保存所发生错误的代码.这一成员可用于在发生I/O非常后针对差别情形采纳差别的对策.

  当设置编译指导{$I- } 时,不产生I/O非常类而是把错误代码返回到预定义变量IOResult中. 

12.1.1.2 堆非常 

  堆非常是在动态内存分配中产生的,包含两个类EOutOfMemoryEInvalidPointer.

12.1  堆非常类及其产生缘由

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

非常类 引发缘由

─────────────────────────────────

EOutOfMemory 没有充足的空间用于满意所要求的内存分配

EInvalidPointer 不法指针.普通是由于程序试图去释放一个业已释放的指针而惹起的

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 


  以上是“第十二章 非常处理与程序调试(一)[Delphi编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 第十二章 非常处理与程序调试(三)
  • 第十二章 非常处理与程序调试(二)
  • 第十二章 非常处理与程序调试(一)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .