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

C# 如何从try块获取所有异常引用?,c#,exception-handling,C#,Exception Handling,我有一个根据XSD验证XML的方法,在这个方法中我尝试传递多个记录。在处理异常时,我只接收作为消息的第一个发生的异常。如何获取所有错误引用 public static bool Validate(string sFileXML, string sFileXSD) { try { XmlReaderSettings settings = new XmlReaderSettings(); settings

我有一个根据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;
        }
    }

我不确定这是否是您想要的,但您可以在循环中使用
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;
}

我不确定这是否是您想要的,但您可以在循环中使用
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;
}
您可以在
XmlReaderSettings
上设置。这将使您有机会在读取XML时处理每个事件和异常

具有包含XML验证异常的
Exception
属性。

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


有一个
异常
属性,该属性包含XML验证异常。

您希望在哪里有多个异常?这可能会有帮助:@TimSchmelter:谢谢。@TimSchmelter如果它在循环中,您的答案涵盖了它,我不知道您为什么要删除它。如果是xml,Patrick Hofman已经写了一些有用的东西。op可能应该指定,因为我在问这个问题。@mybirthname:我不相信在读卡器出现异常后可以读取。你必须在之前处理它。你认为哪里会有不止一个异常?这可能会有帮助:@TimSchmelter:谢谢。@TimSchmelter如果它在循环中,你的答案涵盖了它,我不知道你为什么要删除它。如果是xml,Patrick Hofman已经写了一些有用的东西。op可能应该指定,因为我在问这个问题。@mybirthname:我不相信在读卡器出现异常后可以读取。当然,在我看来,这不是一个处理所有XML验证错误的解决方案,请在一个XML文档中查看我的答案。(如果我错了,请告诉我)@patrickhoffman:我必须承认我对
XmlReaderSettings
不太熟悉,但现在我发现这可能会有所帮助:您的try块是空的,异常将如何缓存?当然,在我看来,这不是处理所有XML验证错误的解决方案,请在一个XML文档中查看我的答案。(如果我错了,请告诉我)@patrickhoffman:我必须承认我对
XmlReaderSettings
不太熟悉,但现在我发现这可能会有所帮助:您的try块是空的,如何缓存异常?