2010-03-08 55 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之间)。