Application.OnException是否在COM Dll中有效?

时间:2010-03-22 21:30:08

标签: delphi exception-handling

我想在Delphi编写的COM DLL中记录一些看似随机的错误。我该怎么做呢?是否可以使用Application.OnException事件处理程序?我控制了COM DLL源代码,但没有调用应用程序。

2 个答案:

答案 0 :(得分:5)

没有。 DLL没有Application变量,因为它不是应用程序。

处理DLL中的异常的正确方法是使用try..except块。最基本的技术是在每个导出函数周围放置一个try..except块,这些函数会在错误传播到DLL之外时捕获错误。

您可以尝试创建一个名为OnException的全局函数,并让Except块调用它并传入它们收到的异常,或类似的东西。这基本上就是Application.OnException的作用;它可以自动执行,因为它在调用堆栈底部附近有一个已知点放在try..except块内。

答案 1 :(得分:2)

我不认为Application.OnException会在COM DLL中为您工作。你可能不得不直接进入低级别的东西。看一下System单元中的RaiseExceptionProc。它应该让你得到你想要的信息。