如果else
子句中有return
条指令,使用except
子句有什么意义?
def foo():
try:
# Some code
except:
# Some code
return
else:
# Some code
我问这个问题是因为Django文档在vote()
函数的some point处执行了这个问题。考虑到return
子句中的except
指令无论如何都会停止执行该函数,为什么他们使用else
子句来隔离只有在没有异常时才应执行的代码提高?他们可能完全省略了else
子句。
答案 0 :(得分:3)
如果try:
套件中存在否异常,则会执行else:
套件。换句话说,只有在遇到except:
套件并且使用了return
语句时才会出现实际异常。
在我看来,return
声明在这里是多余的;一个pass
就足够了。如果没有引发异常,只有仅执行的其他代码,我会使用else:
套件到try
,但可能会引发不应该出现的异常捕获。
你是对的,return
子句中的except
使使用 else:
,因为该部分代码有点多余。可以删除整个套件并删除else:
行:
def foo():
try:
# Some code
except:
# Some code
return
# Some code
答案 1 :(得分:2)
来自文档:
The use of the else clause is better than adding additional code to the try clause because it avoids accidentally catching an exception that wasn’t raised by the code being protected by the try ... except statement.
http://docs.python.org/2/tutorial/errors.html#handling-exceptions