如何从try块获取所有异常引用?

时间:2015-02-03 08:45:23

标签: c# exception-handling

我有一个方法可以根据XSD验证XML,我尝试传递多个记录。在处理异常时,我只收到第一个异常作为消息。如何获取所有错误引用?

    public static bool Validate(string sFileXML, string sFileXSD)
    {
        try
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.Schemas.Add(null, sFileXSD);
            settings.ValidationType = ValidationType.Schema;
            XmlDocument document = new XmlDocument();
            document.Load(sFileXML);
            XmlReader objReader = XmlReader.Create(new StringReader(document.InnerXml), settings);
            while (objReader.Read()) 
            {
            }
            return true;
        }
        catch (Exception eException)
        {
            Console.WriteLine(eException.Message);
            return false;
        }
    }

2 个答案:

答案 0 :(得分:2)

我不确定这是否是您要找的,但您可以在循环中使用Try-Catch

public static bool Validate(string sFileXML, string sFileXSD)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Schemas.Add(null, sFileXSD);
    settings.ValidationType = ValidationType.Schema;
    XmlDocument document = new XmlDocument();
    document.Load(sFileXML);
    XmlReader objReader = XmlReader.Create(new StringReader(document.InnerXml), settings);
    bool success = true, canRead = true;
    while(canRead)
    {
        try
        {
            canRead = objReader.Read();
            // do something else?
        } catch (Exception eException)
        {
            success = false;
            Console.WriteLine(eException.Message);
        }
    }
    return success;
}

答案 1 :(得分:2)

您可以在XmlReaderSettings上设置ValidationEventHandler。这将使您有机会在阅读XML时处理每个事件和异常。

ValidationEventArgs具有Exception属性,其中包含XML验证异常。

相关问题