2012-01-11 67 views
2

Dll在C#中沒有入口點,所以我需要把全局異常處理的代碼放在一個地方,因爲這些DLL在exe中被引用,並且所有在那裏都有try catch,但是有一些錯誤是由於它在崩潰而導致的確定我們正在嘗試創建崩潰轉儲。任何人都可以提出是否可行的解決方案來做到這一點或其他任何事情都必須完成。如何在C#中使用DLL進行全局異常處理?

謝謝。

+3

是的,將異常處理代碼放在代碼實際執行的可執行文件中。 – 2012-01-11 06:30:54

+0

我們已經嘗試過了,Application.ThreadException也在Program.cs的Main中的Main中,並沒有觸及,我們得到了一個默認的dotnet窗口,用於dll中的錯誤並要求我們繼續忽略錯誤。 – Ershad 2012-01-11 06:39:01

+0

請確保閱讀並遵循Application.ThreadException的[文檔](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.threadexception.aspx)。請記住,使用附加的調試器運行應用程序會改變有關默認異常處理的一些事情。 – 2012-01-11 06:50:07

回答

1

正如Cody所說,你應該在try catch塊中包含對該dll的每個調用以處理異常。您的陳述有點令人困惑,我假設您已經在使用try catch塊。如果是這種情況,你可以處理全局異常,以確保它不是exe本身拋出異常。

例如在Win Form應用程序中,您可以處理Application.ThreadException以捕獲全局異常。您也可以嘗試處理AppDomain.Unhandled事件

+0

我已經嘗試過,但是有一些例外情況沒有通過嘗試捕獲並使應用程序崩潰來捕獲。如果它被抓住了,我們正在處理它,如果沒有發現是一個問題。 – Ershad 2012-01-11 06:41:56

+0

也許你在非託管代碼中收到異常。這會導致異常導致系統崩潰。 – 2013-08-12 12:55:29