gpt4 book ai didi

c# - 您如何测试抛出异常的具体原因?

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:23 25 4
gpt4 key购买 nike

确定导致异常的确切原因并纠正它的正确方法是什么?

考虑下面的代码。我尝试解析 XML 字符串,但有时传入的 XML 不是顶级的,这意味着它需要被根元素包围。

发生这种情况时,解析器会抛出一个 XmlException,但抛出它的原因有很多。我想捕获这个特定原因

我这样做了,但我承认这可能不太好:

var doc = new XmlDocument();
try
{
doc.LoadXml(xml);
}
catch(XmlException e)
{
if(e.Message.Contains("multiple root elements"))
{
doc.LoadXml($"<root>{xml}</root>");
}
else
{
throw e;
}
}

这感觉就像一个 hack。执行此操作的正确方法是什么?

最佳答案

您可以按照此处所述尝试为 XmlException.HResult 进行切换:

https://msdn.microsoft.com/en-us/library/system.xml.xmlexception(v=vs.110).aspx

我唯一不确定的是,它是否指向特定的异常类型(如 XmlException)或特定的异常“消息”。

如果这没有帮助,我认为您除了检查消息别无选择。

编辑:另外,正如上面所指出的,您应该throw; 而不是throw e;,因为第二个清除StackTrace。 ReSharper 也对此发出警告。

关于c# - 您如何测试抛出异常的具体原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48358755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com