异常中的finally

  • finally的功能和用法

功能

  • 无论是否发生异常 , 一定会执行的代码块
  • 在函数中, 即便在tryexcept中进行了return也依然会执行finally语法块
  • try语法至少要伴随exceptfinally中的一个

用法

1
2
3
4
5
6
try:
<代码块1>
except:
<代码块2>
finally:
<代码块3>

历史

  • python 2.5 之前的版本, finally需要独立使用不可以try配合,之后才演变成现在的模式

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# coding:utf-8

def test1():
try:
1 / 0
except Exception as e:
print(e)
finally:
return 'finally'


result = test1()
print(result)


def test2():
try:
1 / 0
except Exception as e:
print('111')
return e
finally:
print('finally')


print('-------')
result = test2()
print(result)


def test3():
try:
print('try test 11')
return 'try'
except Exception as e:
print('e')
finally:
print('finally test')


print('------')
result = test3()
print(result)


def test4():
try:
1 / 0
except Exception as e:
print('1')
return e
finally:
print('2')
return 'finally'


print('----------')
result = test4()
print(result)


def test5():
try:
print('1try')
return 'try'
except Exception as e:
print('e')
finally:
print('2finally')
return 'finally'


print('========')
result = test5()
print(result)


def test6():
try:
print('try1')
1 / 0
print('try3')
finally:
# print('i am finally')
return 'i am finally'


print('-------')
result = test6()
print(result)