如果我从尝试块中的功能返回任何不利的一面

时间:2019-05-22 15:27:35

标签: python exception

我正在研究某些python函数,并且它在实现方式上也运行良好,但是我希望在更好的编码实践以及我当前的实现是否存在问题方面寻求建议。

下面是问题上下文的代码段:

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

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

1 个答案:

答案 0 :(得分:0)

如果您使用try / except,没有其​​他内容,也没有finally部分,我会说这是一个清晰的代码(您不必考虑是否要其他或最终执行,因为它可能因语言而异)... < / p>

但是,您应该使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