目录
二,捕获异常
一,异常简介
异常是指在语法正确的前提下,程序运行时的报错就是异常。
print('程序开始了...')
print(1 / 0)
print('程序结束了...')
输出结果:
Traceback (most recent call last):
File "D:/homework/model1.py", line 10, in <module>
print(1 / 0)
ZeroDivisionError: division by zero
程序开始了...
当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
二,捕获异常
1,基本语法
try:
print('程序开始了...')
print(1 / 0)
print('程序走到这里了...')
except ZeroDivisionError:
print('你除数为0了')
print('程序结束了...')
执行流程:
先执行try中的代码,如果代码2报错,则不会执行代码3,执行执行exception中的异常代码。
注意事项:
抛出的异常和捕获的异常必须一致才起作用,否则程序照样报错
2,捕获多个异常
异常捕获流程: 依次捕获依次,直到捕获到对应的异常。
try:
print('start...')
lst=[1,3]
print(1/0) # 除数为0
print(lst[2]) # 索引越界
print('end...')
except ZeroDivisionError:
print('除数为0了...')
except IndexError:
print('索引越界了...')
输出结果:
start...
除数为0了...
3,捕获所有异常
try:
print(1/0)
except Exception as e:
print('发生异常了1...')
# 也可以用第二种方法
try:
print(1/0)
except:
print('发生异常了2...')
4,try...finally...
在程序中,如果一段代码必须要执行,即无论异常是否产生都要执行,那么此时就需要使用finally。
try:
print(1/0)
except ZeroDivisionError:
print('报错了')
finally:
print('都得执行我')
print('aaa')
三,触发异常
使用raise抛出系统的异常
while True:
try:
name=input('name-->')
if len(name)<3:
raise Exception('长度少了..')
else:
pwd=input('密码-->')
print(name,pwd)
except Exception as e:
print('zzzz')
print(e)