try…except…
当try语句出现错误,就会执行except语句;
当try语句没出错时,不会执行except语句。
try…except…else…
若发生了异常,正常抛出异常信息;
若未发生异常,执行else语句。
try…except…finally…
finally语句是必须要执行的
首先来看一道题目:
下面代码的输出结果是?
def fun(num, s=0):
try:
print("try")
s += num
return s
except Exception as e:
print(Exception, ":", e)
return 0
finally:
print("finally")
return 666
fun(2)
print("====================")
print(fun(2))
扩展:
具体代码:
def fun(num, s=0):
try:
print("try")
s += num
return s
except Exception as e:
print(Exception, ":", e)
return 0
finally:
print("finally")
s = 100
return 666
fun(2)
print("====================")
print(fun(2))
结果显示:
可以看出,结果并没有发生改变,这说明了finally中的语句不会影响到 临时栈 中的值,在执行finally之前,临时栈中变量s引用的值已经确定为2了,执行finally语句将s的值变为100,对结果没有产生任何影响,执行完finally后的输出结果仍为2。