当前位置: 首页 > 编程语言 > C#

似乎无法处理XMLException?分享

时间:2023-04-11 03:29:40 C#

似乎无法处理XMLException?我在我们的一个项目网页中有以下代码:XmlDocumentxDoc=newXmlDocument();xDoc.Load(File.FullName);//处理这个队列文件中的每个打印批次foreach(XmlNodeprintBatchinnodeList)//xDoc.SelectNodes("Reports/PrintBatch")){PrintBatchbatch=newPrintBatch();batch.LoadBatch(printBatch,File.Extension);这个.AddBatch(批处理);}}catch(XmlExceptione){//此报告加载错误!Console.WriteLine(e.Message);它基本上需要一个xml批处理文件并将其加载为一个对象,准备好进行处理。它一直运行良好,直到最近我发现其中一个XML文件包含空字符(在XML中无效)。当它尝试处理这个“dudd”文件时,我们得到以下异常:alttexthttp://blog.ianmellor.co.uk/images/xml_err.jpg到目前为止还好......但是当我们尝试“继续”或“skip',我希望它流入catch块。但是,它没有;我们只是看到死亡的红屏:alttexthttp://blog.ianmellor.co.uk/images/xml_err2.jpgWhatam我做错了吗?那是因为你没有写xDoc.Load(File.FullName);insidethetryblock。这就是为什么不处理异常的原因。将load()放在try块中的另一个答案是正确的,但实际上并没有解释为什么SelectNodes()“出现”以抛出未捕获的XmlException。实际的答案是调试器与源代码混淆/不同步,实际上显示了导致异常的错误行。它应该指向xDoc.Load(File.FullName);,在这种情况下,很明显这个调用应该在try块内。为什么?请注意堆栈跟踪最后一行中的XmlLoader.LoadNode()。在.NETReflector中,您可以看到XmlDocument.Load()方法(向下钻取其大小)调用LoadNode()方法。然而,同样在反射器中,可以看出SelectNodes()方法在其内部实现的任何地方都没有调用LoadNode()。因此,根据堆栈跟踪,异常不可能是由SelectNodes()引起的。我已经看到调试器在代码更改和调试开始之前会像这样混淆,但调试符号没有正确更新。尝试清理并重建解决方案以刷新调试符号。以上就是C#学习教程:Can'tseemtohandleXMLException?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: