Try/Catch 异常从导致异常的行继续

2024-06-23

当抛出异常时,如何捕获它,然后从引发错误的行开始继续执行?

编辑: 我们的程序与 Indesign Server 通信,Indesign Server 总是崩溃并抛出随机的 COM 相关错误(这些错误与服务器本身的错误有关)。 Indesign Server 还需要很长时间来处理命令,因此当它崩溃时,我们希望避免重新启动执行。相反,我们想从引发异常的行继续。程序中的任何一行都可能导致异常。所以从技术上来说,我们不能使用循环。


当抛出异常时,如何捕获它,然后从引发错误的行开始继续执行? (不是下一行;重试导致异常的行。)

不要尝试这样做。您正在从错误的方向解决这个问题。

问题是你有一个不可靠的子系统。您有一个处理该不可靠子系统的理想策略,即重试该操作直到成功。如果是这样的话,就不要提出这个逻辑在使用子系统的业务线代码中。业务线代码应该与业务逻辑有关,而不是与您选择处理不稳定子系统的机制有关。将机制隔离到特定的类,使不可靠的子系统变成可靠的子系统。

也就是说,建立一个代理类与不可靠子系统具有相同的接口,并将重试逻辑隔离到该代理类中。然后业务线代码就可以使用代理类作为可靠的子系统。

也就是说,“重试直到有效”的政策可能是一个糟糕的政策。如果子系统确实损坏了,而不仅仅是暂时性的不稳定,那么“重试直到它起作用”就意味着“永远等待”,而大多数用户不喜欢永远等待。例如,如果异常是由于路由器被拔掉而不是某种瞬态情况导致的,那么坐在循环中直到有人重新插入路由器似乎是一个坏主意。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Try/Catch 异常从导致异常的行继续 的相关文章

随机推荐