6.3 Day26
一.认识异常处理
1.IndexError 索引超出序列的范围
lst = [1,2,3,4]
print(lst[100])
2.KeyError 字典中查找一个不存在的关键字
dic = {"a":1,"b":2}
print(dic["c"])
3.NameError 尝试访问一个不存在的变量
print(abc)
4.IndentationError 缩进错误
if 5 == 5 :
print(1)
print(2)
5.AttributeError 尝试访问未知的对象属性s
class MyClass():
a = 100
obj = MyClass()
obj.abc
6.StopIteration 迭代器没有更多的值
it = iter(range(3))
res = next(it)
res = next(it)
res = next(it)
res = next(it)
7.AssertionError 断言语句(assert)失败 [测试领域]
assert断言, 就是猜,猜一猜后面的表达式是否正确,
如果猜对了,什么反应也没有,如果猜错了,直接报错
if 判定时选择执行或者不执行 assert 判定时选择报错或者不报错
二.异常处理的基本语法
1.基本语法
try ... except ...
把有问题的代码放到try这个代码块中
如果出现了异常,直接执行except这个代码块
作用:防止异常错误,终止程序
2.带有分支条件的异常处理
except + 异常错误类 特指在发生这类异常错误时,要执行的分支
3.处理迭代器的异常错误
StopIteration是异常错误类
StopIteration as e 给StopIteration这个类的对象起一个别名叫做e
__str__ 当打印对象时,自动触发该魔术方法,自动接收return的返回值
4.异常处理的其他写法
(1).try ... finally ... 不论代码是否报错,都必须要执行的代码放到finally中
一报错会终止程序,后面的代码就不执行了,所以有些必须要走的代码放到finally中
(2).try .. except .. else ..
如果try代码块没有报错,就执行else这个分支,如果有报错,就不执行else分支
(3).for / while ... else 如果遇到break异常终止了循环,不会执行else这个代码块
三.主动抛异常 raise
raise + 异常错误类 or 异常错误类对象
BaseException 所有异常类的父类(基类,超类) (子类,衍生类)
Exception 常规异常类的父类
1.基本语法
try:
# 主动抛出异常.
raise BaseException
except BaseException:
pass
简写 ( 默认接受的都是BaseException )
try:
raise
except:
print(11)

浙公网安备 33010602011771号