日期:2014-05-18  浏览次数:21011 次

关于.NET库中XmlDocument的Load方法异常无法捕获的情况
C# code
private bool LoadXml(string strFilePath)
{
    try
    {
        XmlDocument _doc = new XmlDocument();
        _doc.Load(strFilePath);

        XmlNode node = _doc.SelectSingleNode("AISolution");
        if (node != null)
        {
            return AIFileType.AI_FILE_TYPE_SOLUTION;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("error");
        return false;
    }
}


如代码所示,因为我的XML文件格式不一定正确(文件里面的内容也不一定是XML格式的),所以Load完并且SelectSingleNode的时候就会给我抛异常,说“Root element is missing”,而我的预期目标是想捕获这些异常,不过程序并没有走到catch里面,MessageBox也没弹出来,就在SelectSingleNode那里中断并抛异常了。

我把catch 的Exception 类型改为 XmlException 也不管用。问下这是怎么回事?接触C#不久,求调教。

------解决方案--------------------
不应该,你单步调试试试
------解决方案--------------------
我在调试了一下,能catch住啊,你试试这code

C# code
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                XmlDocument _doc = new XmlDocument();
                _doc.Load("C:/test.txt");
                XmlNode node = _doc.SelectSingleNode("AISolution");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error");
            }
        }
    }
}