skiperrorproc.dpr

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

DPR
30
字号
program SkipErrorProc;
{$APPTYPE CONSOLE}
{$O-}

procedure LogError(ErrorCode: Integer; ErrorAddr: Pointer);
begin
  writeln('Code: ', ErrorCode, ' Addr: ', LongInt(ErrorAddr));

  // 清除堆栈,返回到Error()例程调用之前
  asm
    {$IFOPT W+}
      RET 6 * TYPE DWORD
    {$ELSE}
      RET 3 * TYPE DWORD
    {$ENDIF}
  end;
end;

var
  p : Pointer;

begin
  ErrorProc := @LogError;

  getmem(p, 1024*1024*1024);  // 试图分配过大的内存块,引发 reOutOfMemory 错误
  writeln('now, to here...');

readln;
end.

⌨️ 快捷键说明

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