gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:12:22 29 4
gpt4 key购买 nike

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

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

最佳答案

When an exception is thrown, how can I catch it and then continue execution starting from the line that caused the error? (Not the next line; retry the line that caused the exception.)

不要尝试那样做。你从错误的方向来解决这个问题。

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

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

也就是说,“重试直到成功”的策略可能是一个糟糕的策略。如果子系统真的坏掉了,而不只是以某种暂时的方式不稳定,那么“重试直到它工作”就意味着“永远等待”,而大多数用户不喜欢永远等待。例如,如果异常是由于路由器被拔掉而不是某些 transient 条件引起的,那么在循环中坐在那里直到有人重新插入路由器似乎是个坏主意。

关于c# - Try/Catch 异常从导致异常的行继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7125352/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com