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