我正在努力改进我的错误处理,还学习nLog。我希望能够导致一些“真正的”错误来测试我的错误处理正在做什么。是否有任何易于故意导致其中存在内部异常的内容,尤其是多个级别?例如,我已经完成了除以0和SQL查询到不存在的表之类的东西,但这些都没有内部异常。
答案 0 :(得分:4)
您可以创建自己的嵌套异常到第n度。
throw new Exception("1", new Exception("2", new Exception("3")));
答案 1 :(得分:3)
例如,您可以使用Task.Run(() => throw new Exception());
。这将抛出一个AggregateException
,它将包含异常作为内部异常。
调用通过反射抛出异常的内容也会导致抛出TargetInvocationException
,其中包含实际异常作为内部异常。
如果我没记错的话,使用XmlSerializer
反序列化无效的XML文件通常会产生更深层次的嵌套错误层次结构。
例如,以下程序会抛出三个“级别”的异常:
public class MyClass
{
[XmlElement("Element")]
int Element { get; set; }
}
class Program
{
static void Main(string[] args)
{
string xml = "<Element>String</Element>";
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
serializer.Deserialize(new StringReader(xml));
}
}
但到目前为止,最简单的解决方案当然是抛出自己的嵌套异常。
答案 2 :(得分:0)
搜索“XAMLParseException” - 在WPF窗口构造函数中导致一些错误。你会找到很多例子。