Application.OnException和Delphi的适用范围

时间:2013-08-12 19:11:27

标签: delphi exception exception-handling initialization delphi-xe4

我是一名新程序员并试图了解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的单位中?我认为它应该适用于应用程序,但我似乎无法称之为。

1 个答案:

答案 0 :(得分:3)

Application.OnException的范围确实是应用程序范围的。每当引发未处理的异常时,该事件将触发。

您无法看到事件触发,因为您在启动时在消息循环开始之前引发异常。