Python中的try...except...finally

try, except, finally是Python中的异常捕捉机制,通常的用法就是try..except...结合起来用,程序捕捉try语句块中的异常,如果发现异常就把异常交给except中的语句块进行处理,也就是执行except中的语句,这里except也可以结合if...else一起使用。

当然,try...except也可以结合finally使用。则将finally放在最后,finally语句块的内容通常是做一些后事的处理,比如资源释放什么的,并且finally语句块是无论如何都要执行的,即使在前面的try和except语句块中出现了return,都现将finally语句执行完再去执行前面的return语句。下面看一个简单的例子:

try.py

def tryTest():
    try:
        den = input("input a number:")
        x = 1.0/int(den)
        print x
        return 1
    except Exception, e:
        print e
        return 0
    finally:
        print "this is a finally test"

result = tryTest()
print result


执行try.py

当输入为1时,程序没有捕捉到异常,则返回值为1,但是在返回之前会执行finally的语句块,也即是打印“this is a finally test”这句话,如下图:

当输入为0时,程序没有捕捉到除0异常,执行except中的语句块,则返回值为0,但是在返回之前会执行finally的语句块,如下图:


所以无论如何finally语句块中的代码都被执行了,倘若此时finally中有个return语句的话,那么整个函数就会从finally中的return语句中返回,前面的return语句就没用啦。

你可能感兴趣的:(python,python,异常,finally,return,exception)