2012-02-01 67 views
2

我有一個Windows窗體應用程序。它使用Assembly.LoadFile加載擴展名爲.Plugin.dll的程序集。其中一個「插件」調用另一個程序集dll。該DLL最終拋出一個ValidationException異常。拋出異常的方法是從IDataErrorInfo繼承的類中。該類是包含在Linq to SQL類(.dbml)中的類。在「插件」中,我調用了DataContext.SubmitChanges。這被包裝在try/catch塊中。這會導致我的業務邏輯在提交給OnValidate覆蓋中的數據庫之前驗證數據。我看到的結果是在拋出ValidationExeption之後,調試器停在OnValidate方法的底部,表示發生了未處理的異常。如果我繼續運行應用程序,則執行catch代碼塊。這是我首先想要的,但爲什麼當它真正處理時我得到了未處理的異常?Windows窗體應用程序中未處理的異常

+4

什麼是堆棧跟蹤說異常源自何處?這可能有幫助。 – 2012-02-01 18:02:56

回答

0

我99%確定你的「真正的」異常導致這個確實沒有處理 - 這是調試器在第一時間告訴你的,而且他一般是正確的。

當你繼續在VS中運行應用程序後,實際上並不是當你將EXE從調試器中移出時會發生什麼。實際上,調試器會首先通知您未處理的異常,然後繼續執行一些待處理的邏輯(如果有的話)(這就是爲什麼您會看到ValidationException錯誤)。但未處理的異常仍然存在。我不完全知道這種行爲的細節和原因,但我注意到了很多次。

您必須在確定出現unhandledexception的確切位置處發現精確錯誤。 也許發佈你的代碼示例會有所幫助。

0

首先,是同一AppDomain中的插件嗎?其次,它聽起來像是你有你的調試器來「拋出異常時中斷」而不是「當異常是用戶未處理時中斷」。

在VS.NET,進入調試 - >例外...

展開「通用語言運行時例外」節點,看看有沒有被勾選。

相關問題