python中的 try...except...finally 的用法
author:headsen chen
date:2018-04-09 16:22:11
try, except, finally是Python中的异常捕捉机制,通常的用法就是try..except...结合起来用,程序捕捉try语句块中的异常,如果发现异常就把异常交给except中的语句块进行处理,也就是执行except中的语句,这里except也可以结合
if...else一起使用。
例1:try中无异常时,执行try和finally中的内容
def read_file():
try:
print('aaa')
except:
print('error occurs while reading file')
finally:
print('bbbb')
read_file()
------>
aaa
bbbb
总结:当try下面的语句正常运行的时候,一直运行。运行完了后运行finaly下面的语句
例2:try中有异常时:
当try下面的语句运行后,碰到异常的时候,运行except下面的语句,最后运行finaly下面的语句,finaly语句一般做些资源释放的工作,比如关闭打开的文件等。
def read_file():
try:
print(2222222222)
print(aaa)
except:
print('error occurs while reading file')
finally:
print('bbbb')
read_file()
------>
2222222222 ----------> 证明try中正确的程序会被执行的,配到异常后在调到except部分执行异常的。
error occurs while reading file
bbbb
当然,try...except也可以结合finally使用。则将finally放在最后,finally语句块的内容通常是做一些后事的处理,比如资源释放什么的,并且finally语句块是无论如何都要执行的,即使在前面的try和except语句块中出现了return,都现
将finally语句执行完再去执行前面的return语句。下面看一个简单的例子:
例3:try...except...else的用法
else里的只有在try下面的语句全部正确执行了才会执行else,try里面有异常不会else的语句,和finaly不同,finaly是无论try里有无异常都执行
def read_file():
try:
print(2222222222)
except:
print('error occurs while reading file')
else:
print('bbbb')
read_file()
例4:取返回值1
当异常函数里的返回值取值:try里面正确执行时,整个函数的返回值采用try下面的返回值
def read_file():
try:
print(2222222222)
# print(a)
return 5
except:
print('error occurs while reading file')
return 6
finally:
print('bbbb')
print(read_file())
----->
2222222222
bbbb
5
例5:取返回值2
try里面有异常时,整个函数的返回值采用except下面的返回值
def read_file():
try:
print(2222222222)
print(a)
return 5
except:
print('error occurs while reading file')
return 6
finally:
print('bbbb')
print(read_file())
----->
2222222222
error occurs while reading file
bbbb
6