在C#中容易有意引起的任何“现实”嵌套异常?

时间:2013-05-17 20:18:32

标签: c# error-handling nlog inner-exception

我正在努力改进我的错误处理,还学习nLog。我希望能够导致一些“真正的”错误来测试我的错误处理正在做什么。是否有任何易于故意导致其中存在内部异常的内容,尤其是多个级别?例如,我已经完成了除以0和SQL查询到不存在的表之类的东西,但这些都没有内部异常。

3 个答案:

答案 0 :(得分:4)

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

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

enter image description here

答案 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窗口构造函数中导致一些错误。你会找到很多例子。