异常简介
异常是指在语法正确的前提下,程序运行时报错就是异常。
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
异常举例:
print('程序开始了')
print(1/0)
print('程序结束了')
运行结果
程序开始了
Traceback (most recent call last):
File "E:/homework/pythonworksplace/dey10/demon07-异常简介.py", line 9, in <module>
print(1/0)
ZeroDivisionError: division by zero
怎样能让程序发生异常时,不让程序停止,能正常运行呢?如下效果,就需要捕获异常。
while True:
try:
ret=eval(input('请输入计算公式:'))
print(ret)
except ZeroDivisionError:
print('除数不能为0,请重新输入')
运行结果:
请输入计算公式:1+4
5
请输入计算公式:1/0
除数不能为0,请重新输入
请输入计算公式:
捕获异常
基本语法
try:
…代码1…
…代码2…
except 异常类型1:
…代码3…
except 异常类型2:
…代码4…
except 异常类型3:
…代码5…
注意:
如果发生的异常类型和捕获的异常类型不相同,还是不能捕获异常,程序还会结束。
try中一旦检测到异常,就执行这个位置的逻辑
except捕获多个异常
异常捕获流程: 依次捕获依次,直到捕获到对应的异常。
多分支结构:
try:
…代码1…
…代码2…
except 异常类型1:
…代码3…
except 异常类型2:
…代码4…
except 异常类型3:
…代码5…
try:
print('程序开始了')
print(1/0)
print('啦啦啦啦')
lst=[]
print(lst[1])
print('zzz')
except IndexError:
print('索引越界')
except ZeroDivisionError:
print('除数为0了...')
print('程序结束了')
运行结果:
程序开始了
除数为0了...
程序结束了
元组结构:
try:
…代码1…
…代码1…
…代码1…
expect(异常类型1,异常类型2,…)
…代码4…
try:
print('程序开始了')
print(1/0)
print('啦啦啦啦')
lst=[]
print(lst[1])
print('zzz')
except (IndexError,ZeroDivisionError):
print('程序出错了...')
print('程序结束了')
运行结果:
程序开始了
程序出错了...
程序结束了