异常处理
为什么要异常:没有异常机制程序遇到错误会崩溃掉,不在往下运行,定义了异常,可以捕获到异常,并继续往下运行;python为每一种异常定制了一个类型,提供了一种独特的语法结构来进行异常处理
- 基本语法
try:
被检测的代码块
except 捕捉异常类型:
try中一旦检测到异常,就执行这个位置的逻辑
- 异常类只能处理指定的异常情况,如果非指定异常则无法处理
s1=hello
try:
int(s1)
except IndexError as e: #
print(e)
- 多分支异常 (多个except)
try:
被检测的代码块
except KeyError as e: #捕捉key异常 赋予一个别名,方便打印
print('===e')
except ValueError as e: #捕捉值异常
print('ValueError')
except IndexError as e: #捕捉index(下标)异常
print(e)
- 万能异常(Exception),就是什么异常都能捕获到
while True:
try:
s = input('>>>')
int(s)
break
except Exception as y:
print('你输入的有误',y)
print('执行新的')
这时你可能想了,既然有万能异常,我统统就用这个万能不就好了嘛?嘿嘿,但是。。有两种情况,一种就是无论出现什么异常,我们不去管它,使用同一段代码逻辑去处理他们,这个时候就用万能异常就行,另一种情况,对于不同异常我们需要定制不同的处理逻辑,这个时候我们就需要用到多分支异常了,也可以在多分支异常后面加上万能异常。其实跟if,elif,else 差不多。
- 异常的其他执行机制
try:
被检测的代码块
except KeyError as e: #捕捉key异常 赋予一个别名,方便打印
print('===e')
except ValueError as e: #捕捉值异常
print(e)
except IndexError as e: #捕捉index(下标)异常
print(e)
else:
print('try内代码块没有异常则执行我')
finally:
print('不管有没有异常,我都会执行该模块,通常是进行清理工作')
异常的参考: