我正在使用由第三方軟件公司(我沒有源代碼)提供給我的COM DLL。我確實知道他們使用Java來實現它,因爲它們的對象包含屬性名稱,如'JvmVersion'。調用COM-dll組件後,C#異常不會被調試器捕獲
在我實例化一個由提供的COM dll引入的對象之後,我的C#程序中的所有異常都無法被VS調試器捕獲,並且每次發生異常時,我都會得到默認的Windows調試器選擇對話框(並執行我的程序在完整的VisualStudio調試環境下以調試模式)。
舉例說明:
throw new Exception("exception 1");
m_moo = new moo(); // Component taken from the COM-dll
throw new Exception("exception 2");
異常1將VS被捕獲並顯示 「黃色例外窗口」。
異常2將打開一個名爲「Visual Studio Just-In-Time Debugger」的對話框,其中包含文本「myfile.vshost.exe [1348]中發生未處理的win32異常」。接着是我的系統上現有的VS實例列表以供選擇。
我猜「moo」對象的實例會覆蓋C#的異常處理程序或類似的東西。我是否正確,有沒有辦法保存C#的異常處理程序?
嘗試仍然有效。 Debugger.Break()很好 - 暫停執行併爲當前執行的行着色。 NullReferenceException與其他異常一樣是fubar。 – 2010-05-09 12:12:34
聽起來沒問題。測試NRE可以被try/catch抓住。 – 2010-05-09 13:02:33