try-except-else语句的用例

时间:2013-12-14 17:29:57

标签: python django try-except

如果else子句中有return条指令,使用except子句有什么意义?

def foo():
    try:
        # Some code
    except:
        # Some code
        return
    else:
        # Some code

我问这个问题是因为Django文档在vote()函数的some point处执行了这个问题。考虑到return子句中的except指令无论如何都会停止执行该函数,为什么他们使用else子句来隔离只有在没有异常时才应执行的代码提高?他们可能完全省略了else子句。

2 个答案:

答案 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