use*_*783 7 language-agnostic exception-handling exception robustness
在使用异常信号错误的语言中,我想调用一些第三方代码,如果失败,则运行后备代码.例如:
try:
result = third_party.fast_calculation()
catch:
result = slower_calculation()
Run Code Online (Sandbox Code Playgroud)
根据我的经验,很少知道第三方代码可能抛出的所有异常.因此,我不能在catch
条款中列出这些例外情况.另一方面,我经常被告知不要catch
每一个可能的例外.
catch
在这种情况下我该如何写条款?
仅当您有特定的方法来处理特定的异常类型时,才应该捕获它们。您可以(并且应该)根据需要以最合适的顺序捕获尽可能多的特定类型的异常。
如果您只想以相同的方式处理每个异常,我相信您当前的非类型化捕获是最好的。在我看来,真正的问题是当你留下一个空的 catch 时,因为客户端代码无法知道该函数是否确实做了它应该做的事情。
归档时间: |
|
查看次数: |
119 次 |
最近记录: |