c# - Visual Studio 2010 调试器如何处理 XmlReader.Read 中的 XmlException?

标签 c# .net visual-studio-2010 debugging xmlreader

<分区>

我运行这个示例应用程序:

class Program
{
    static void Main()
    {
        var reader = System.Xml.XmlReader.Create(@"C:\nonXml.txt");
        while (reader.Read()) { }
        System.Console.WriteLine("Ok");
        System.Console.ReadKey();
    }
}

nonXml.txt 是一个包含非 xml 内容的单行文本文件。

当我在没有调试器的情况下运行应用程序时,reader.Read 会抛出预期的 XmlException 并且应用程序会因错误而退出。当我使用调试器(Visual Studio 中的 F5)运行它时,调试器发出异常信号,但在按下 F5(继续)后,应用程序意外地正常继续并写入“Ok”。

在这种情况下, Debug模式发生了什么?

最佳答案

我想我理解你的困惑。当您调试并且 visual studio 处理异常时,它会在错误行处停止。在正常情况下,按 F5 再次运行同一行,您将陷入错误循环。但在您的情况下,您只有一个异常,然后 VS 像什么都没有发生一样运行。

我想你现在意识到发生了什么。第一次尝试 reader.Read() 读取文件中的 xml 数据并将流中的索引移动到文件末尾。按 F5 后再次运行此行,reader.Read() 返回 false,因为 EOF。就是这样。

在正常运行(没有调试)中,您的应用程序会在第一个 Uncaught Error 时死亡,并且没有其他任何事情发生。

奖金示例作为证明(粘贴而不是您的 while 循环):

try
{
    while (reader.Read()) { }
}
catch (Exception)
{
    Console.Out.WriteLine("We have excpetion, this is wrong file");
}

while (reader.Read()) { } // we have eof so we don't get exception only false 

关于c# - Visual Studio 2010 调试器如何处理 XmlReader.Read 中的 XmlException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12692973/

相关文章:

.net - Visual Studio 2010 中的自定义框架定位

.net - 如何将 Win32 API 函数 "ChooseColor "创建的颜色值转换为 css 兼容的 RGB 十六进制值

c# - 如何抑制 thread.abort() 错误 C#?

c# - .Net 调用异步方法并等待

c# - 无法加载文件或程序集 'CsvHelper'(C#、VS2019、CSVHelper)

c# - 同一文件的大小差异,在 Windows XP 和 Windows 7 上阅读

.net - 获取数据表列的下一个自动增量值?

visual-studio-2010 - 在 Visual Studio 2010 中概述 IF-ELSE 代码块

visual-studio-2010 - 在 Visual Studio 2010 中配置 libjpeg

javascript - 需要强制从不是通过单击按钮启动的 Javascript 回发