如何避免显示错误?

问题描述

| 如何避免显示Windows小错误框的错误?
Try
Except
不起作用,因为该错误不是由Delphi显示,而是来自Program或我认为来自Windows。
try
Size:=TFileStream.Create(BitFile,fmOpenRead);
except on E: EFCreateError
do EC.Add(\'Error: \' + IntToStr(GetLastError));
end;
    

解决方法

        应用程序中是否显示错误?否则,这是未处理的异常吗?还是Windows或外部应用程序显示的框? 您说\'event \',但是事件处理程序也可以包含try..except块。 如果是异常,并且您不知道它来自何处,则可以使用TApplicationEvents类附加Application.OnException事件。它将针对所有未处理的异常触发。您可以在此处捕获它,或者设置一个断点并使用堆栈跟踪来查看异常的来源。     ,        错误框并不表示已引发异常。错误框可以在代码中明确显示。 因此,您的问题似乎是“如何防止第三方代码按设计工作?”。除了反编译二进制文件外,我还不能提出太多建议,尤其是在您没有源代码的情况下。 如果您具有源代码并且知道需要替换的例程,则可以编写自己的替换内容并在运行时“劫持”该例程。例如,fastcode项目使用这种方法来替换delphi的例程,而无需重新编译VCL。您可以在他们的项目中看到实现。 http://fastcode.sourceforge.net/ 单位:FastcodePatch.pas     ,        这里是
 private
    { Private declarations }
  public
   procedure MyExceptionHandler(Sender : TObject; E : Exception ); //define exception handler
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MyExceptionHandler(Sender:TObject;E:Exception);
begin
    //Do nothing
end;

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

procedure TForm1.Button1Click(Sender: TObject);
begin
  //Generate an exception
  asm
  mov eax,8272
  mov [eax],$2FFFFF
  end 
end;
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...