前言
对于每一种高级语言来说,异常处理结构不仅能够提高代码的健壮性,而且也提高了代码的容错性,从而不会因为使用者错误输入造成系统崩溃,也可以通过异常处理结构为使用者提供更加友好的错误提示。在python开发过程中引发程序异常错误的原因有很多中,较为常见的有:除0、下标越界等。
Python中提供了很多不同形式的异常处理结构,其基本利用思路都是:先尝试执行代码,再进行处理可能发生的错误。
try…except…结构
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
print("除的结果是:", c)
except BaseException as e:
print(e)
结果:
请输入被除数:6
请输入除数:5
除的结果是: 1.2
发生异常:
请输入被除数:1
请输入除数:0
float division by zero #被除数为0
try…except…else结构
与上面差不多,如果 try 块中没有抛出异常,则执行 else 块。如果 try 块中抛出异常,则执行 except 块,不执行 else 块。
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
except BaseException as e:
print(e)
print("我是异常")
else:
print("除的结果是:",c)
正常输出:
请输入被除数:45
请输入除数:15
除的结果是: 3.0
有异常:
请输入被除数:1354
请输入除数:0
float division by zero
try…except…finally…结构
try…except…finally 结构中,finally 块无论是否发生异常都会被执行;通常用来释放 try 块中申请的资源。
try:
a = input("请输入被除数:")
b = input("请输入除数:")
c = float(a)/float(b)
except BaseException as e:
print(e)
print("我是异常")
else:
print("除的结果是:", c)
finally:
print("程序结束")
正常执行:
请输入被除数:8
请输入除数:2
除的结果是: 4.0
程序结束
有异常:
请输入被除数:aaaa
请输入除数:123
could not convert string to float: 'aaaa'
程序结束
可以发现不管有没有异常都执行了finally中的语句。
常见的异常
只需要记住exception万能异常就行了,什么异常度可以接受,其他的可以根据字面意思理解。