exception - 如何在出现异常的情况下稳健地调用第三方代码?

标签 exception exception-handling language-agnostic robustness

在使用异常来表示错误的语言中,我想调用一些第三方代码,如果失败,则运行回退代码。例如:

try:
    result = third_party.fast_calculation()
catch:
    result = slower_calculation()

根据我的经验,知道第三方代码可能抛出的所有异常是非常罕见的。因此,我无法在 catch 中列出这些异常(exception)情况。条款。另一方面,我经常被告知不要 catch每一个可能的异常(exception)。

我该怎么写catch这种情况下的条款?

最佳答案

只有当您有特定的方法来处理它们时,您才应该捕获特定的异常类型。您可以(并且应该)根据需要以最合适的顺序捕获尽可能多的特定类型的异常。

如果您只想以相同的方式处理每个异常,我相信您当前的无类型捕获已经足够了。当你留下一个空的 catch 时,IMO 的真正问题就出现了,因为客户端代码无法知道该函数是否真的做了它应该做的事情。

关于exception - 如何在出现异常的情况下稳健地调用第三方代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35518388/

相关文章:

c# - 如何使用 ContinueWith 正确管理任务中的异常

java - 在 Java 中处理异常或抛出异常

c++ - JIT 编译器和异常处理

c# - 为什么我们在使用 New 操作时不添加 try catch

java - Iterable 中的异常处理

java - "Too Many Results"的常规 Java 异常是什么

c# - 哪些类型的异常不要捕获?

javascript - SQL语句中的条件 VS 代码中的条件

language-agnostic - 您所见过的最差的技术知识?

language-agnostic - 如何阻止临时解决方案永远持续下去?