0%

try异常捕获流程

[TOC]

返回值

执行try或者except中的return语句之前,先将返回值保存起来,然后执行finally语句(如果finally存在);

如果finally中有return语句,那么程序就return了,不会再return tryexcept中值,所以finally中最好不要包含return

finally 中有return时

函数返回值该return,且其返回值是变量执行的最后值;

finally 中没有return 时

不论对错,执行按顺序执行遇到的最后的return,可以理解为将返回值保存起来,然后执行finally;

有finally,并且finally中有return语句,且except中有raise

1
2
3
4
5
6
7
8
9
def main():
try:
pass
except Exception as e:
#捕获异常并执行直到遇到raise或finally中的return
raise e #该句及其以后的except的的语句不会被执行
finally:
return 0

try性能

会损耗时间和性能;

except捕捉异常类型

只能捕捉以 Exception 为基类的类;以Error为基类的不能;

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def main():
try:
res = 1
print('try')
return res
except:
res = 2
print('except')
return res
else:
#当且仅当 try 不出错并且没有return时,才会执行
res = 3
print('else')
return res
finally:
res = 4
print('finally')
#return res