Fal*_*rri 5 python flow-control try-catch-finally
我确信这个概念已经出现过,但我找不到一个好的,简单的答案.使用try/finally是一种处理多个返回函数的坏方法吗?比如我有
try:
if x:
return update(1)
else:
return update(2)
finally:
notifyUpdated()
这似乎比在临时变量中存储update()命令并返回它更好.
Omn*_*ous 11
我不推荐它.首先是因为notifyUpdated()即使任一分支中的代码抛出异常也会被调用.你需要这样的东西来真正得到预期的行为:
try:
if x:
return update(1)
else:
return update(2)
except:
raise
else:
notifyUpdated()
Run Code Online (Sandbox Code Playgroud)
其次,因为try块通常表示你正在做某种异常处理,而你不是,你只是为了方便而使用它们.所以这个结构会让人感到困惑.
例如,我不认为前两个人中的任何一个(至少有一个人删除了他们的答案)回答你的问题,意识到你真正想要做的事情.令人困惑的代码很糟糕,无论它看起来多么方便和聪明.
Ned*_*der 11
我不会将try/finally用于不涉及异常的流.这对自己的好处来说太棘手了.
这个更好:
if x:
ret = update(1)
else:
ret = update(2)
notifyUpdated()
return ret
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1481 次 |
| 最近记录: |