【Python】异常处理

# 一.什么是异常:异常是错误发生的信号,一旦程序出错,
# 并且程序没有处理错误的机制,程序就会抛出异常信息并且终止

# 二.错误分类
# 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('自定义异常')

# 五.异常处理的条件
# 错误一定发生且无法预知触发条件的情况下使用
posted @ 2018-08-26 13:28  caya  阅读(117)  评论(0编辑  收藏  举报