【发布时间】:2012-09-23 11:09:30
【问题描述】:
我运行这个示例应用程序:
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”。
在这种情况下,调试模式下发生了什么?
【问题讨论】:
-
您正在使用 XMLReader 来读取非 xml 内容。为什么不使用 System.IO.StreamReader..?
-
@dj kraze:这只是一个例子。我在询问使用和不使用调试器的应用程序的不同行为。我一般没有阅读文件的问题:-)
-
Visual Studio 是否设置为中断所有异常?是否只是在 reader.Read() 内部抛出了异常,但它被处理了,返回 false?
-
@Liam:这不仅仅是一个“内部异常”,这就是应用程序在没有附加调试器的情况下失败的原因,这是预期的行为。在 Debug/Exceptions 窗口中更改中断设置不会改变这里的任何内容。 所做 修复奇怪行为的是调试设置:"Unwind the call stack on unhandled exceptions"。取消选中此选项会导致应用程序在调试模式下出现预期故障,但它仍然无法回答我的问题。
-
@Hans 它看起来不像是重复的,是吗?您提供的所有有问题的示例和参考资料都参考了 Windows 窗体和
Form.Load事件。甚至症状也不同(在我的情况下,VS 显示未处理的异常,而在他们的情况下则没有)。虽然,我尝试过针对不同的平台。我的问题的行为没有改变。
标签: c# .net visual-studio-2010 debugging xmlreader