2010-03-22 56 views
1

我想记下一些看似随机的错误,我得到了一个Delphi写的COM DLL。我该怎么做呢?有没有可能使用Application.OnException事件处理程序?我有COM DLL的来源的控制,但不是调用应用程序。Application.OnException在COM Dll中工作吗?

回答

5

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

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

你可能会尝试创建一个名为OnException的自己的全局函数,并让Except块调用它并传递它们接收到的异常,或者类似的东西。这基本上就是Application.OnException所做的事情;它可以自动执行它,因为它在调用堆栈的底部附近有一个已知点,将其放入try..except块中。

2

我不认为Application.OnException将在COM DLL中为你工作。你可能不得不去低级别的东西。看看系统单元中的RaiseExceptionProc。它应该让你得到你想要的信息。