2014-01-06 86 views
5

我創建了一個c#dll來處理來自應用程序的所有未處理的異常。從參考DLL處理未處理的異常

在我的DLL項目添加

AppDomain appDomain = AppDomain.CurrentDomain; 
appDomain.UnhandledException += new UnhandledExceptionEventHandler(MyErrorHandler); 

代碼,添加引用我的應用程序。

調試時,如果我的應用程序拋出一個unhanlded異常它會自動從DLL中捕獲,我成功地登錄到一個文件。

但是,當我的應用程序被部署(或直接執行我的應用程序(雙擊exe)),DLL無法捕捉應用程序中未處理的異常。

+0

好寫的,是這一段代碼在您的.exe文件中發生異常之前調用? –

+0

在mY dll中存在類(稱爲「abc」),同時創建abc appDomain.UnhandledException的對象被初始化,並在我的main()中創建了abc對象。 – Sumeshk

回答

4

this MSDN上

你可以嘗試使用加處理程序到應用程序的threadException,也是CurrentDomain未處理的異常就像你在你的代碼

Application.ThreadException += new ThreadExceptionEventHandler(Error_.MyExc); 
Application.SetUnhandledExceptionMode(Error_.MyCatchExc); 

// from your code 
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyErrorHandler);