首页 > 解决方案 > 如果我从 try 块中的函数返回,任何不利的一面

问题描述

我正在研究一些python函数,它在我实现的方式上运行良好,但我正在寻找更好的编码实践方面的建议,当然如果我当前的实现有问题。

以下是问题上下文的代码片段:

def foo():
    try:
       [doing some file operations]
       ....
       return <intended variable>
    except:
       [logging, non recoverable exception]
       sys.exit(1) 

想知道将我的 return 语句保留在 try 块中是否是不好的编码习惯。

标签: pythonexception

解决方案


如果您使用 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

推荐阅读