一、什么是异常?
异常是错误发生的信号,程序一旦出错,如果程序中还没有相应的处理机制,那么该错误就会产生一个异常抛出来,程序的运行也随之终止。
二、一个异常分为三部分
1.异常的追踪信息
2.异常的类型
3.异常的值
三、异常的分类
1、语法异常:
这类异常应该在程序执行前就改正 print('start...') x=1 x+=1 if: print('stop...')
index error 2、逻辑上的异常: l=['a','b'] l[100000]
多分支异常
语法 try: print('start...') x=1 y l=[] l[3] d={'a':1} d['b'] print('end...') except (NameError,KeyError,IndexError): print('变量名或者字典的key或者列表的索引有问题') 保证这段代码不让程序结束掉
print('other')
万能异常(解决一切异常的方法) try: print('start...') x=1 y l=[] l[3] d={'a':1} d['b'] print('end...') except Exception: print('变量名或者字典的key或者列表的索引有问题')
万能异常 try: print('start...') x=1 y l=[] l[3] d={'a':1} d['b'] import os os.aaa print('end...') except Exception as x: print('变量名或者字典的key或者列表的索引有问题',x) 异常的值,最有价值的是异常的值
======================================================================================================
异常的其他结构
try:
print('start...')
except Exception as e:
print('万能异常...')
else:
print('在被检测的代码块没有出现任何异常的情况下执行')
finally:
print('无论有没有异常发生,程序都会执行')
当涉及到资源方面问题,最好用finally,涉及到回收系统的资源
else写完再写finally
try可以直接和finally
try可以不可以和else连用
主动触发异常 raise TypeError('类型错误')
class People: def __init__(self,name): if not isinstance(name,str): raise TypeError('%s必须是字符串类型'%name) self.name=name p=People(123)
断言(未理解)
自定义异常(未理解)
总结
异常处理,当错误发生的条件是可以预知的,这时候用if判断,实在不可预知用异常处理