我是一名新程序员并试图了解Delphi的Application.OnException
事件如何运作。一位同事通过创建自己的方法并将其实例化并将其传递到单元Application.OnException
部分中的initialization
来修改默认异常处理。此单位在另一个单位的uses
子句中声明,否则未使用。
unit ADLDebug;
...
class procedure TADLExceptionHandler.ADLHandleException (Sender: TObject; E: Exception);
...
initialization
Handler := TADLExceptionHandler.Create;
Application.OnException := Handler.ADLHandleException;
我只能使用调试器进入initialization
部分,而不能进入ADLHandleException
方法。我试图在重新定义的HandleException
方法捕获的代码中导致异常。
重新定义的HandleException
方法的范围是否仅在包含ADLDebug
的单位中?我认为它应该适用于应用程序,但我似乎无法称之为。
答案 0 :(得分:3)
Application.OnException的范围确实是应用程序范围的。每当引发未处理的异常时,该事件将触发。
您无法看到事件触发,因为您在启动时在消息循环开始之前引发异常。