# 一.什么是异常:异常是错误发生的信号,一旦程序出错,
# 并且程序没有处理错误的机制,程序就会抛出异常信息并且终止
# 二.错误分类
# 1) 语法错误(直接飘红,程序执行前检查)
# print(
# 2)逻辑错误(不可避免)
ValueError
int('aaa')
NameError
#name
IndexError
l=[]
l[1]
KeyError
d={}
d['name']
ArithmeticError
class Foo:
pass
F.xxx
ZeroDivisionError
1/0
TypeError
for i in 3:
print(i)
# 三.异常处理
# 强调一:错误发生条件可预知,此时应该用if判断去预防异常
# if
# elif...
# 强调二:对于不可预知的错误,可使用 try...except...
try:
print('尝试的内容')
except IndexError as i: # 多分枝指定法
print('发生指定错误才执行', i)
except Exception as e: # 万能法,通常扔到分枝最下面
print('发生其他错误则执行', e)
else:
print('不报错才执行')
finally:
print('报不报错都执行')
# 四.主动触发异常:
# 1.raise 异常类型(值)
dict_fdef = {}
if not dict_fdef['key']:
raise KeyError('...')
# 2.断言
info={}
info['name'] = 'egon'
# 判断不成功直接抛出异常,不需要raise
assert ('name' in info) and ('age' in info)
# 3.自定义异常类型
class MyException(BaseException):
def __init__(self, msg):
super(MyException, self).__init__()
self.msg = msg
def __str__(self): # 不写则不显示异常后的内容
return self.msg
raise MyException('自定义异常')
# 五.异常处理的条件
# 错误一定发生且无法预知触发条件的情况下使用