2008-09-25 27 views
4

在我們的應用程序之一,我得到一個異常,我似乎無法找到或陷阱。你可以在主應用程序單元結束後捕獲異常嗎?

... 
    Application.CreateForm(TFrmMain, FrmMain); 
    outputdebugstring(pansichar('Application Run')); //this is printed 
    Application.Run; 
    outputdebugstring(pansichar('Application Run After')); //this is printed 
end. 
<--- The Exception seems to be here  

事件日誌顯示

> ODS: Application Run 
> //Various Application Messages 
> ODS: Application Run After 
> First Change Exception at $xxxxxxxx. ...etc 

所有我能想到的是它的單位之一的終止代碼。

(德爾福7)

回答

4

嘗試安裝MadExcept - 它應該捕獲異常,並給你一個堆棧跟蹤。

當我遇到類似問題時,它對我有幫助。

4

這裏有兩兩件事你可以嘗試:

1)快速方便是打「F7」最終「端」。這會引導您進入其他定稿模塊。

2)嘗試覆蓋Application.OnException事件。

4

SysUtils單元實際上在其初始化部分設置了默認的ErrorProc和ExceptProc過程,並在最終化部分解除了這些過程,所以在這種情況下經常需要確保SysUtils是您的使用條款中的第一個單元dpr,那麼這將是最後一個定稿。可能足以讓你得到一些有關錯誤的有意義的數據。

2

定稿異常很棘手。即使您先將SysUtls放在您的項目文件中,您的應用程序對象可能已經不存在了,這意味着您的全局異常處理程序也不存在了。 MadExcept雖然可以爲此工作。

另一種解決方案是把一個嘗試/除了在每個單元定稿部分塊,然後處理異常那裏。

你的目標是什麼?你想壓制異常還是調試它?如Zartog所建議的那樣,通過使用F7來逐步完成調試。如果您發現哪個單元在定稿中有例外情況,那麼您可以嘗試將其置於從其調用的使用子句中的不同順序。

祝你好運!

相關問題