代码之家  ›  专栏  ›  技术社区  ›  Brann

为什么Visual Studio在下一行而不是在错误行上显示我的一些异常?

  •  4
  • Brann  · 技术社区  · 16 年前

        int i = 1;
        switch (i)
        {
            default:
                throw new NotImplementedException(); //this will be yellow
        }
    

    然而,我经常看到错误的线是彩色的,就像在这个例子中:

            int i = 1;
            switch (i)
            {
                default:
                    if (i==1)
                         throw new NotImplementedException();
                    break;  i = 1; //this line is displayed in yellow, which makes no sense
            }
    

    虽然我了解这两个代码片段之间的一些区别(在第一种情况下,“throw…”行是方法的最后一个可执行行,因此不会为之后的代码生成IL,因此这是最后一个可能“显示”异常的行),我想知道VS在第二个片段的正确行上是否显示了异常。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Lomilar    16 年前

    如果代码已更新,但代码尚未编译(在“编辑并继续”中经常发生),行号将关闭。我以前也经历过这种事。这是我确信这一切发生在哪里的原因之一。

    我所知道的另一种情况是,当由于某种原因(Visual studio有时会得到它的DLL依赖树fubared)而没有重建DLL依赖项时,它在调试时也会突出显示错误的行。这类似于“编辑并继续”问题。

    我能想到的另一件事是,我很少注意到Studio会突出显示代码将返回的行。。。在抛出异常并点击continue之后,代码将在x行继续执行。。但我不知道怎么复制。

        2
  •  1
  •   Larry Fix    16 年前

    我认为关键是“如果”条款。我在代码中看到过同样的行为。如果If块中的单个语句周围没有“{}”,则可以将当前语句指示为预期行之后的行。