2010-03-08 52 views
4

我們有以下代碼:例外不被抓住

try { 
    // some code throwing MyException 
} catch (MyException ex) { 
    // [1] 
    // no (re)throw here 
} catch (Exception ex) { 
    if (ex is MyException) { 
     // [2] 
    } 
} 

如果我們運行沒有附加調試器的代碼,一切都正常運行。但是,如果我們調試代碼,我們不會指向[1],而是[2]。據我瞭解語言規範,這應該是不可能的。

即使這個代碼很奇怪,這個代碼甚至在調試時也能正常運行。這種奇怪的行爲僅在幾天前纔開始。

+2

您確定確實執行了[2]嗎?即使執行了正確的代碼,VS調試器有時也會突出顯示錯誤的行。 – dtb 2010-03-08 07:45:14

+0

是其他程序集的'MyException'部分嗎?刪除對它的引用並再次添加它,構建項目。看看是否有幫助。 – shahkalpesh 2010-03-08 08:01:40

+1

清理解決方案並重新構建它。 – HotTester 2010-03-08 08:05:17

回答

1

檢查您是否完成了重建並使用了正確的pdb文件。還要檢查你是否沒有一些有條件編譯的代碼改變內容(即代碼在#if DEBUG之間)。