Delphi中异常的处理

时间:2010-02-27 18:00:23  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:。如果我们对Delphi有些编程经验的话,我们就会发现Delphi生成的整个程式就是一个大的Try…Except块。Delphi附带了许多内置异常类系列,用于处理大范围的错误条件。我们可以很容易的创建自己的异常类,来处理程序中易于受错误影响的关键事件。以下是Delphi在SysUtils中声明的异常处理的基类:  Exception = class(TObject)  private  &n...
  正文:今天我们将讨论两个题目:
一、 异常的理论
二、 异常的简单处理方法

异常的理论
利用异常,我们可以处理指定代码中的特定区域的错误。在Delphi中,如果发现了异常,而你没有明确的处理它,那么一个默认的异常处理程序将处理该异常。如果我们对Delphi有些编程经验的话,我们就会发现Delphi生成的整个程式就是一个大的Try…Except块。Delphi附带了许多内置异常类系列,用于处理大范围的错误条件。我们可以很容易的创建自己的异常类,来处理程序中易于受错误影响的关键事件。以下是Delphi在SysUtils中声明的异常处理的基类:
  Exception = class(TObject)
  private
    FMessage: string;
    FHelpContext: Integer;
  public
    constructor Create(const Msg: string);
    constructor CreateFmt(const Msg: string; const Args: array of const);
    constructor CreateRes(Ident: Integer); overload;
    constructor CreateRes(ResStringRec: PResStringRec); overload;
    constructor CreateResFmt(Ident: Integer; const Args: array of const); overload;
    constructor CreateResFmt(ResStringRec: PResStringRec; const Args: array of const); overload;
    constructor CreateHelp(const Msg: string; AHelpContext: Integer);
    constructor CreateFmtHelp(const Msg: string; const Args: array of const;
      AHelpContext: Integer);
    constructor CreateResHelp(Ident: Integer; AHelpContext: Integer); overload;
    constructor CreateResHelp(ResStringRec: PResStringRec; AHelpContext: Integer); overload;
    constructor CreateResFmtHelp(ResStringRec: PResStringRec; const Args: array of const;
      AHelpContext: Integer); overload;
    constructor CreateResFmtHelp(Ident: Integer; const Args: array of const;
      AHelpContext: Integer); overload;
    property HelpContext: Integer read FHelpContext write FHelpContext;
    property Message: string read FMessage write FMessage;
  end;
以下内置的异常都可以直接从SysUtils.pas中引用:
EAbort = class(Exception);

  EHeapException = class(Exception)
  private
    AllowFree: Boolean;
  public
    procedure FreeInstance; override;
  end;

  EOutOfMemory = class(EHeapException);

  EInOutError = class(Exception)
  public
    ErrorCode: Integer;
  end;

{$IFDEF MSWINDOWS}
  PExceptionRecord = ^TExceptionRecord;
  TExceptionRecord = record
    ExceptionCode: Cardinal;
    ExceptionFlags: Cardinal;
    ExceptionRecord: PExceptionRecord;
    ExceptionAddress: Pointer;
    NumberParameters: Cardinal;
    ExceptionInformation: array[0..14] of Cardinal;
  end;
{$ENDIF}

  EExternal = class(Exception)
  public
{$IFDEF MSWINDOWS}
    ExceptionRecord: PExceptionRecord platform;
{$ENDIF}
{$IFDEF linux}
    ExceptionAddress: Longword platform;
    AccessAddress: LongWord platform;
    SignalNumber: Integer platform;
{$ENDIF}
  end;

  EExternalException = class(EExternal);

  EIntError = class(EExternal);
  EDivbyZero = class(EIntError);
  ERangeError = class(EIntError); "Delphi中异常的处理"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Language/Delphi/12950.html

 1/5    1 2 3 4 5 下一页 尾页


关键字:

关于《Delphi中异常的处理》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td