.net - 重试临时异常 .Net

标签 .net exception

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

我确信重试所有异常不会有帮助,因为由于业务逻辑会发生一些异常。仅应处理临时异常。但我的问题是如何识别.net库中的那些临时异常?

就我而言,我可能遇到的临时异常可能是由于以下任一原因造成的

  1. SQL 服务器

  2. 短信服务器

  3. 创建 PDF。

上面如何识别具体的异常类型?

有人可以帮我解决这个问题吗?

最佳答案

没有内置方法可以根据异常对象识别暂时性错误。您必须从文档中并通过测试找出可能发生的典型 transient 故障。

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

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

Entity Framework 对暂时性错误有一些支持。查看源代码,看看他们是如何做到的。即使他们正在使用我建议的方法,我也是通过查看他们提交的源代码发现的。他们逐渐添加了越来越多他们最初忘记的错误。

关于.net - 重试临时异常 .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436408/

相关文章:

c# - 在 Microsoft 测试项目中包含资源 dll

c# - RhinoMocks 期望复杂对象作为参数

c++ - 在 C++ 中处理浮点异常

c# - C++ 到 .net 字典,得到 MarshalDirectiveException

c++ - 从 "catch all" block 重新抛出异常如何在 C++ 中生成相同的异常?

c# - 使用 Lambda 表达式从集合中选择多个值

c# - 第二次调用同一个 DbContext 导致错误 'DbContext has been disposed'

.net - Amazon SNS : How to get EndpointArn by token(registrationId) using amazon . 网络 SDK?

java - 我一直在获取java.lang.illegalstateexception?

c# - 在不使用 while 循环的情况下找到最内层的异常?