最近我创建了一些批处理程序(控制台),系统将从数据库中获取记录,创建一些 pdf 并通过邮件将它们发送到目的地。我现在有一些要求,比如如果有任何异常,系统应该重试几次。
我确信重试所有异常不会有帮助,因为由于业务逻辑会发生一些异常。仅应处理临时异常。但我的问题是如何识别.net库中的那些临时异常?
就我而言,我可能遇到的临时异常可能是由于以下任一原因造成的
SQL 服务器
短信服务器
创建 PDF。
上面如何识别具体的异常类型?
有人可以帮我解决这个问题吗?
最佳答案
没有内置方法可以根据异常对象识别暂时性错误。您必须从文档中并通过测试找出可能发生的典型 transient 故障。
例如,SQL 错误可能是暂时的(超时、网络、死锁等)或永久的(由于数据无效而无法插入行)。
没有比手动构建列表更好的方法了。请务必具体说明您的条件,例如使用 SqlException.Number
将您要处理的确切错误列入白名单。
Entity Framework 对暂时性错误有一些支持。查看源代码,看看他们是如何做到的。即使他们正在使用我建议的方法,我也是通过查看他们提交的源代码发现的。他们逐渐添加了越来越多他们最初忘记的错误。
关于.net - 重试临时异常 .Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30436408/