python - 如果我从 try 块中的函数返回,任何不利的一面
问题描述
我正在研究一些python函数,它在我实现的方式上运行良好,但我正在寻找更好的编码实践方面的建议,当然如果我当前的实现有问题。
以下是问题上下文的代码片段:
def foo():
try:
[doing some file operations]
....
return <intended variable>
except:
[logging, non recoverable exception]
sys.exit(1)
想知道将我的 return 语句保留在 try 块中是否是不好的编码习惯。
解决方案
如果您使用 try/except 而没有 else 或 finally 部分,我会说这是一个清晰的代码(您不必考虑 else 或 finally 是否执行,因为它可能因语言而异)...
但是,您应该尽可能缩短 try 块并尽可能详细地指定异常 - 永远不要使用裸异常,它会捕获所有异常,包括键盘中断......尽管您无论如何都要退出。
所以如果你没有使用任何奇怪的东西,这个 try/except/else 更好:
try:
risky_operation_that_might_break_something()
except Exception: #better practice, still a bit too wide
#logging here
sys.exit(1)
else:
#non-risky rest of the code
return something