2010-05-18 43 views
4

我開始厭倦了這個例外。不能處理它,即便如此我使用這個:如何捕捉這種類型的異常?

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

仍然沒有成功,任何人都可以解釋我,我應該怎麼處理它在一個不錯的方式。或者如何檢測它是否觸發了此消息並關閉了應用程序,因爲每當它關閉時我都會自動啓動它。

順便說一句,它是控制檯應用程序。

alt text http://img688.imageshack.us/img688/7619/exeption2.jpg

+0

附加一個調試器。這是什麼樣的例外?訪問違規?內存不足?堆棧溢出?它發生在哪裏(調用堆棧)?你是否託管導致此異常的組件?我會試圖找出背後的原因並修正它,而不是試圖通過捕捉它來壓制它。 – 2010-05-18 06:48:02

+0

抓住這個並不容易,它隨機發射。就像它可以工作一個星期左右的時間和baaam一樣,有時它會立即引發..很難理解問題出在哪裏,並且無法隨時連接調試器運行...... – 2010-05-18 06:59:50

+2

但是,如果你有安裝了一個調試器(如Visual Studio),您可以將它附加到進程並單擊對話框上的「取消」以開始調試以獲取有關該異常的更多信息。 – 2010-05-18 07:05:18

回答

1

你試過放置try{...} catch(Exception e){...}塊在主,然後張貼了所有的異常數據,Windows事件查看器? 或者類似地檢查當前存在的Windows事件信息。

0

Herehere是一些很好的帖子,爲什麼即使在註冊UnhandledExceptionEvent時也能獲得對話框。

如果您註冊參加活動,它不會阻止應用程序關閉/退出。據我所知這是設計。在事件中,您可以選擇記錄異常並驗證您的應用程序出了什麼問題。

0

您是否使用任何P/Invoke調用?我之前在C interop之前遇到過問題,C DLL在內部導致訪問衝突錯誤,而這又會導致C#應用程序災難性地崩潰 - 就像上面的屏幕截圖一樣。不幸的是,它變成了通過反覆試驗找到入口點(P/Invoke)到C dll中,然後修改C代碼的情況。

如果您使用的是P/Invoke,那麼所有對機器的預期依賴關係和正確版本都是?