2010-03-22 50 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。它應該讓你得到你想要的信息。