gpt4 book ai didi

python - 重新引起困惑

转载 作者:太空宇宙 更新时间:2023-11-04 05:18:53 24 4
gpt4 key购买 nike

如果我调用一个可能引发 ValueError 或 AttributeError 的函数(例如 foo()),最好的方法是什么?如果出现 ValueError,我想提供另一种方法(例如,调用 bar()),但如果出现 AttributeError我想重新引发异常?

  1. 显式地重新引发特定(此处为 AttributeError)异常?

     try:
    foo() # may raise ValueError or AttributeError
    except ValueError:
    bar()
    except AttributeError:
    raise
  2. 还是什么都不做(隐式重新设计)?

     try:
    foo() # may raise ValueError or AttributeError
    except ValueError:
    bar()

更新 1:

在编写库(至少我知道它会被不同用户使用的模块)的情况下,更好的方法是什么?显式重新引发并记录重新引发的函数,还是仅记录函数(写下它可能隐式引发特定异常)?

最佳答案

您可以只排除异常而不重新引发。在您的情况下,这不是必需的:

 try:
foo() # may raise ValueError or AttributeError
except ValueError:
bar()

在你必须做一些清理或需要在引发之前调用函数的情况下,再次引发会很有用,例如:

 try:
foo() # may raise ValueError or AttributeError
except ValueError:
bar()

raise

关于python - 重新引起困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992039/

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