Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在.Net上重试临时异常_.net_Exception - Fatal编程技术网

在.Net上重试临时异常

在.Net上重试临时异常,.net,exception,.net,Exception,最近,我创建了一些批处理程序(控制台),系统将从数据库中获取记录,创建一些pdf并通过邮件将它们发送到目的地。我现在得到了一些要求,如系统应该重试几次,如果有任何异常 我确信重试所有异常都不会有帮助,因为某些异常会由于业务逻辑而发生。只应处理临时异常。但我的问题是如何在.net库中识别这些临时异常 在我的情况下,我可能得到的可能的临时例外是由于以下任何一个原因 Sql server Smpt服务器 Pdf创建 在以上这些中,如何识别确切的异常类型 有人能帮我吗 没有基于异常对象识别瞬时错误的内置

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

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

在我的情况下,我可能得到的可能的临时例外是由于以下任何一个原因

  • Sql server

  • Smpt服务器

  • Pdf创建

  • 在以上这些中,如何识别确切的异常类型


    有人能帮我吗

    没有基于异常对象识别瞬时错误的内置方法。您必须通过文档和测试了解可能发生的典型瞬态故障

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

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


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

    您可能希望为不同的目的引入不同的类,这样您就可以确定抛出的是什么。