我正在使用Delphi 7并试图处理在程序运行期间抛出的所有可能的异常.我用过Application.OnException:= HandlerProcedure; 处理异常,但是当异常发生时,HandlerProcedure永远不会被调用.为了确保它是否真的有效,我在分配Application.OnException后引发了异常,如下所示:
Application.OnException := HandlerProcedure;
raise Exception.Create('Exception');
Run Code Online (Sandbox Code Playgroud)
并将HandlerProcedure定义为:
procedure TFormMain.HandlerProcedure(Sender: TObject; E: Exception);
begin
ShowMessage('Exception.');
Exit;
end;
Run Code Online (Sandbox Code Playgroud)
但HandlerProcedure永远不会被调用.如何让它处理所有异常?
Arn*_*hez 12
如果要拦截所有异常,则需要实现RTLUnwindProc低级别过程.
这有点低级(例如,它需要asm技能),所以你应该更好地依赖现有的代码.看到这个堆栈溢出问题.我甚至在我自己的回答中添加了一些参考代码(包括低级asm,在Del32下使用Win32).
| 归档时间: |
|
| 查看次数: |
10324 次 |
| 最近记录: |