在测试项目中创建0x0eedfade异常

时间:2016-11-23 00:56:45

标签: delphi delphi-5

我的应用程序崩溃了0x0eedfade异常。 在Windows事件日志中报告此异常,但未被应用程序异常处理程序捕获。为了更好地理解这可能发生的原因,我想创建一个产生相同错误的测试应用程序。

这个问题here的答案表明它是由跨模块边界引发Delphi异常引起的。鉴于此,我创建了一个抛出异常的Delphi库和一个调用库的Delphi exe。

图书馆代码

library Project2;
uses
  SysUtils,
  Classes;
{$R *.RES}
procedure DllException; export;
begin
  raise Exception.Create('Library exception');
end;

exports DllException;

begin
end.

程序代码

unit test;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    procedure AppOnException(Sender: TObject; E: Exception);
  public
  end;
var
  Form1: TForm1;

  procedure DllException; external 'Project2.dll'

implementation
{$R *.DFM}
procedure TForm1.AppOnException(Sender: TObject; E: Exception);
begin
  OutputDebugString(PChar(E.Message));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := AppOnException;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DllException;
end;
end.

我原以为这会产生0x0eedfade异常并导致程序崩溃。会发生什么错误信息显示基本上是"图书馆例外"程序继续进行。

如何创建一个产生0x0eedfade异常的测试应用程序?

0 个答案:

没有答案