我们有以下代码:
try
{
// some code throwing MyException
}
catch (MyException ex)
{
// [1]
// no (re)throw here
}
catch (Exception ex)
{
if (ex is MyException)
{
// [2]
}
}
如果我们运行代码没有附加调试器,一切运行正常。但是,如果我们调试代码,我们不会指向[1]而是[2]。据我了解语言规范,这是不可能的。
即使更奇怪,这段代码甚至在调试时运行良好。奇怪的行为仅在几天前开始。
答案 0 :(得分:1)
检查您是否已完成重建并使用正确的pdb文件。还要检查你是否有一些有条件编译的代码改变了东西(即#if DEBUG
语句之间的代码)。
答案 1 :(得分:1)
根据原始来源,可能与此问题有关:Why can't I catch a generic exception in C#?