最近我创建了一些批处理程序(控制台),系统将从数据库中获取记录,创建一些pdf并通过邮件将它们发送到目的地。我现在有一些要求,如果有任何异常,系统应重试几次。
我确信重试所有异常都无济于事,因为有些异常会因业务逻辑而发生。只应处理临时例外情况。但我的问题是如何识别.net库中的那些临时异常?
在我的情况下,我可能获得的临时例外将由以下任何一个
引起Sql server
提示服务器
创建Pdf。
以上如何识别确切的异常类型?
任何人都可以帮我这个吗?
答案 0 :(得分:2)
没有内置方法可以根据异常对象识别瞬态错误。您必须从文档和测试中找出可能发生的典型瞬态故障。
例如,SQL错误可能是暂时的(超时,网络,死锁,...)或永久性的(由于数据无效而无法插入行。)
没有比手动构建列表更好的方法了。请确保在您的条件中具体说明,例如使用SqlException.Number
将您想要处理的确切错误列入白名单。
实体框架对瞬态错误有一些支持。查看源代码以了解它们是如何做到的。即使他们使用我建议的方法,我通过查看他们提出的源代码提交找到了。他们逐渐增加了他们最初忘记的错误。