tryraiseexc_exe.dpr

来自「delphi开发语言下的源代码分析」· DPR 代码 · 共 37 行

DPR
37
字号
program TryRaiseExc_EXE;
{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TTryException = class(Exception)
  private
    FMsgStr : String;
  public
    constructor Create (const Msg: string);
    property MsgStr: String read FMsgStr;
  end;

constructor TTryException.Create (const Msg: string);
begin
  inherited;
  FMsgStr := Msg;
end;

procedure DoSomething; external 'TryRaiseExc_DLL.dll';

procedure TestIt;
begin
  try
    DoSomething;
  except
    on E:TTryException do   // 1. 这里会混淆EXE与DLL中的TTryException类
      Writeln(E.MsgStr);    // 2. 这里输出消息时出错(存取非法地址)
  end;                      // 3. 异常处理结束时,将会因错误的释放E.FMsgStr而导致出错
end;

begin
  TestIt;
end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?