重试临时例外.Net

时间:2015-05-25 10:38:57

标签: .net exception

最近我创建了一些批处理程序(控制台),系统将从数据库中获取记录,创建一些pdf并通过邮件将它们发送到目的地。我现在有一些要求,如果有任何异常,系统应重试几次。

我确信重试所有异常都无济于事,因为有些异常会因业务逻辑而发生。只应处理临时例外情况。但我的问题是如何识别.net库中的那些临时异常?

在我的情况下,我可能获得的临时例外将由以下任何一个

引起
  1. Sql server

  2. 提示服务器

  3. 创建Pdf。

  4. 以上如何识别确切的异常类型?

    任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

没有内置方法可以根据异常对象识别瞬态错误。您必须从文档和测试中找出可能发生的典型瞬态故障。

例如,SQL错误可能是暂时的(超时,网络,死锁,...)或永久性的(由于数据无效而无法插入行。)

没有比手动构建列表更好的方法了。请确保在您的条件中具体说明,例如使用SqlException.Number将您想要处理的确切错误列入白名单。

实体框架对瞬态错误有一些支持。查看源代码以了解它们是如何做到的。即使他们使用我建议的方法,我通过查看他们提出的源代码提交找到了。他们逐渐增加了他们最初忘记的错误。