C# VisualStudio2010调试器如何处理XmlReader.Read中的XmlException?

C# VisualStudio2010调试器如何处理XmlReader.Read中的XmlException?,c#,.net,visual-studio-2010,debugging,xmlreader,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.t

我运行此示例应用程序:

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
抛出一个预期的
xmleexception
,应用程序将错误退出。当我使用调试器(VisualStudio中的F5)运行它时,调试器发出异常信号,但在按F5(继续)之后,应用程序意外地正常继续并写入“Ok”


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

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

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

在正常运行(不进行调试)中,应用程序会在第一个未修补的错误时死亡,并且不会发生任何其他情况

奖金样本作为证明(粘贴代替while循环):


您正在使用XMLReader读取非xml内容。。为什么不使用System.IO.StreamReader?@dj kraze:这只是一个例子。我问的是有调试器和没有调试器的应用程序的不同行为。一般来说,我在读取文件时没有问题:-)Visual Studio是否设置为在所有异常情况下都中断?是否只是在reader.Read()中引发了异常,但它已被处理,返回false?@Liam:这不仅仅是一个“内部异常”,这就是为什么应用程序在没有附加调试器的情况下失败,这是预期的行为。在“调试/异常”窗口中更改中断设置不会在此处更改任何内容。修复这种奇怪行为的是调试设置:。取消选中此选项会导致应用程序在调试模式下出现预期的故障,但它仍然不能回答我的问题。@Hans它看起来不像是重复的,是吗?您给出的所有示例和参考都涉及Windows窗体和
Form.Load
event。甚至症状也不同(在我的例子中VS显示了未处理的异常,在他们的例子中则没有)。尽管如此,我还是试着针对不同的平台。我提问的行为没有改变。
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