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