如果except
子句中有return
指令,那么使用else
子句有什么意义?try-except-else语句的用例
我问这个问题,因为Django文档做它在some point,在vote()
功能。考虑到except
子句中的return
指令无论如何都会停止函数的执行,为什么他们使用else
子句隔离只在没有引发异常时才执行的代码?他们本可以完全省略else
条款。
如果except
子句中有return
指令,那么使用else
子句有什么意义?try-except-else语句的用例
我问这个问题,因为Django文档做它在some point,在vote()
功能。考虑到except
子句中的return
指令无论如何都会停止函数的执行,为什么他们使用else
子句隔离只在没有引发异常时才执行的代码?他们本可以完全省略else
条款。
如果在try:
套件中存在否异常,则会执行else:
套件。换句话说,只有在出现实际例外的情况下,才会使用except:
套件并使用return
语句。
在我看来,return
声明是什么在这里是多余的;一个pass
就足够了。如果还有其他代码,应使用else:
套件作为try
,如果没有引发异常,则应执行只有,但可能引发本应不被捕获的异常。
你是正确的except
子句中使用return
的为else:
代码有些多余的那款让。整个套件可以去凹陷和else:
线删除:
def foo():
try:
# Some code
except:
# Some code
return
# Some code
从文档: 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
我认为这一点是,他们可能只是省略'else'完全。它的风格。 – katrielalex
@katrielalex:只有当“传递”不仅仅是说明性的。否则,无论上下文如何,'else:pass'都是**总是**冗余的。 –
当然'通过'是多余的。我的意思是删除'else'和缩进'pass'在语义上也是相同的。 – katrielalex