gpt4 book ai didi

python - 在python中放置异常处理的位置

转载 作者:太空狗 更新时间:2023-10-29 22:25:37 26 4
gpt4 key购买 nike

在 Python 中使用 try/except block 时,是否建议将其委托(delegate)给任何可能引发异常的方法,或在父函数中捕获它,或两者兼而有之?

例如,以下哪项是首选?

def my_function():
s = something.that.might.go_wrong()
return s

def main():
try:
s = my_function()
except Exception:
print "Error"

def my_function():
try:
s = something.that.might.go_wrong()
return s
except Exception:
print "Error"

def main():
s = my_function()

PEP 8 似乎对此事保持沉默,我似乎到处都能找到这两种情况的例子。

最佳答案

这实际上取决于相关函数的语义。一般来说,如果您正在编写一个库,您的库可能应该处理在库内部引发的异常(可选择将它们重新引发为新的特定于库的异常)。

不过,在单个函数级别,您要考虑的主要事情是您希望在何种上下文/范围内处理异常 - 如果在内部函数中的异常情况下您可以做一些合理的不同事情,在内部函数中处理它可能很有用;否则,在外部函数中处理它可能更有意义。

对于写入输出的特定情况,仅在最高级别执行此操作通常很有用,并且内部函数只会 (a) 返回值或 (b) 引发异常。这使得代码更易于测试,因为您不必担心测试副作用输出。

关于python - 在python中放置异常处理的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35215835/

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