我想从一个catch块调用一个方法,但该方法内部的xmlnode似乎不起作用。我得到一个null。如果我从try块中调用同样的方法,它就可以工作。从catch方法调用方法不起作用
var doc = new XmlDocument();
try
{
doc.Load(f.FullPath);
// do some work
}
catch (Exception e)
{
if (e is XMLException)
{
checkXML(ref doc);
}
public void checkXML(ref XmlDocument doc)
{
XmlNode xn = doc.SelectSingleNode("/BroadcastMonitor/Current");
xn["name1"].InnerText = SecurityElement.Escape(xn["name1"].InnerText);
xn["name2"].InnerText = SecurityElement.Escape(xn["name2"].InnerText); ;
}
现在,当catch块调用方法'checkXML'时,我得到xn为空。但是如果我只是为了检查而从'try'块执行相同的操作,'xn'就有一个值。 'doc'也有一个值,无论何时调用try或from catch块。
这是怎么发生的?请帮助我理解。
编辑
<BroadcastMonitor>
<updated>2014-10-17T07:56:30</updated>
<Name>TESTING</Name>
<Current>
<artistName>اصاله& نصرى</artistName>
<albumName>شخصيه عنيده</albumName>
<CategoryName>ARABIC & SONGS</CategoryName>
</Current>
</BroadcastMonitor>
谢谢。
您是否尝试过调试程序并通过代码逐步查看'doc'变量的内容在异常代码块中的内容? – pasty 2014-10-17 05:26:35
是的,我已经这样做了,正如我的问题所述。 doc变量的值为 – user726720 2014-10-17 05:28:42
你的代码在'doc.Load(...)'或'做了些什么工作'失败(=引发异常)? – pasty 2014-10-17 05:30:02