在.Net上重试临时异常
最近,我创建了一些批处理程序(控制台),系统将从数据库中获取记录,创建一些pdf并通过邮件将它们发送到目的地。我现在得到了一些要求,如系统应该重试几次,如果有任何异常 我确信重试所有异常都不会有帮助,因为某些异常会由于业务逻辑而发生。只应处理临时异常。但我的问题是如何在.net库中识别这些临时异常 在我的情况下,我可能得到的可能的临时例外是由于以下任何一个原因在.Net上重试临时异常,.net,exception,.net,Exception,最近,我创建了一些批处理程序(控制台),系统将从数据库中获取记录,创建一些pdf并通过邮件将它们发送到目的地。我现在得到了一些要求,如系统应该重试几次,如果有任何异常 我确信重试所有异常都不会有帮助,因为某些异常会由于业务逻辑而发生。只应处理临时异常。但我的问题是如何在.net库中识别这些临时异常 在我的情况下,我可能得到的可能的临时例外是由于以下任何一个原因 Sql server Smpt服务器 Pdf创建 在以上这些中,如何识别确切的异常类型 有人能帮我吗 没有基于异常对象识别瞬时错误的内置
有人能帮我吗 没有基于异常对象识别瞬时错误的内置方法。您必须通过文档和测试了解可能发生的典型瞬态故障 例如,SQL错误可以是暂时性的(超时、网络、死锁等),也可以是永久性的(由于数据无效,无法插入行) 没有比手动构建列表更好的方法了。请确保在您的条件中是特定的,例如使用
SqlException.Number
将您要处理的确切错误列为白名单
实体框架对暂时性错误有一些支持。查看源代码,看看他们是如何做到的。甚至他们也在使用我建议的方法,这是我通过查看他们提交的源代码发现的。他们逐渐地添加了越来越多的错误,而这些错误最初是他们忘记的。您可能希望为不同的目的引入不同的类,这样您就可以确定抛出的是什么。