1

我正在努力改进我的错误处理,同时也在学习 nLog。我希望能够引起一些“真正的”错误来测试我的错误处理正在做什么。是否有任何容易故意导致的内部异常,尤其是多个级别?例如,我已经对不存在的表进行了除以 0 和 SQL 查询等操作,但这些都没有内部异常。

4

3 回答 3

4

您可以创建自己的第 n 级嵌套异常。

throw new Exception("1", new Exception("2", new Exception("3")));

在此处输入图像描述

于 2013-05-17T20:39:33.030 回答
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));
   }
}

但到目前为止,最简单的解决方案当然是抛出您自己的嵌套异常。

于 2013-05-17T20:21:29.357 回答
0

搜索“XAMLParseException” - 在 WPF 窗口构造函数中导致一些错误。你会发现很多例子。

于 2013-05-17T20:22:58.353 回答