抛出异常时,如何捕获它然后从导致错误的行开始继续执行?
编辑:我们的程序与Indesign Server进行通信,它一直崩溃并抛出随机的COM相关错误(这些错误与服务器本身的错误有关).Indesign Server也需要很长时间来处理命令,因此当它崩溃时,我们希望避免重新启动执行.相反,我们希望从导致异常的行继续.程序中的任何行都可能导致异常.所以从技术上讲,我们不能使用循环.
Eri*_*ert 12
抛出异常时,如何捕获它然后从导致错误的行开始继续执行?(不是下一行;重试导致异常的行.)
不要试图这样做.你正在从错误的方向接近这个问题.
问题是你有一个不可靠的子系统.您有一个处理该不可靠子系统的所需策略,即重试该操作直到成功为止.如果是这种情况,那么不要将该逻辑放在使用子系统的业务线代码中.业务线代码应该是关于业务逻辑的,而不是关于您选择处理片状子系统的机制.将机制隔离到特定类,使不可靠的子系统成为可靠的子系统.
也就是说,构建一个与不可靠子系统具有相同接口的代理类,并将重试逻辑隔离到该代理类中.然后,业务线代码可以使用代理类作为可靠的子系统.
也就是说,"重试它直到它运作"的政策可能是一个糟糕的政策.如果子系统真正被打破并且不仅仅是以某种短暂的方式存在片状,那么"重试直到它工作"意味着"永远等待",并且大多数用户不喜欢永远等待.例如,如果异常是路由器被拔出而不是某些瞬态条件的结果,则坐在循环中直到有人将路由器插回来似乎是个坏主意.
| 归档时间: |
|
| 查看次数: |
3973 次 |
| 最近记录: |