异常处理的相关理论
异常处理 什么是异常? 程序在运行过程中出现了不可预知的错误 并且该错误没有对应的处理机制,那么就会以异常的形式表现出来 造成的影响就是整个程序无法再正常运行 异常的结构 1.异常的类型:NAMEERROR 2.异常的信息:name 'fdsdfsdf' is not defined 3.异常的位置:Traceback (most recent call last): File "D:/python脱产10期视频/day29/01 异常处理.py", line 1, in <module> fdsdfsdf 异常的种类 分为两大类 1.语法错误 是你程序立刻就能解决的,这种错误是不能被容忍的 语法上的错误 发现之后应该立刻解决 2.逻辑错误 这种错是可以被容忍的 因为一眼看不出来 针对逻辑上的错误 可以采用异常处理机制进行捕获 常见的错误类型 NAMERROR 名字错误 SyntaxError 语法错误 KeyError 键不存在 ValueError 值错误 IndexError 索引错误 如何避免 异常处理 在你认为可能会出现bug的代码块上方try一下:注意try内部的代码块越少越好 try: 可能出错的代码 except 出错的类型 as e: # 将报错信息赋值给变量e 出错之后的处理机制
代码演示:
# res = {'name':''} # print(res['password']) # print(res.get('password','fdjdsfk')) # int('sdjajsd') # l = [1,2,3,4] # # l[111] # try: # name # l = [1,2,3] # l[111] # d = {'name':'jason'} # d['password'] # except NameError: # print('NameError') # except IndexError: # print('indexerror') # except KeyError: # print('keyerror') """ 错误发生之后 会立刻停止代码的运行 执行except语句 比对错误类型 """ # try: # # name # # l = [1,2,3] # # l[111] # d = {'name':'jason'} # d['password'] # # Exception # except BaseException: # 万能异常 所有的异常类型都被捕获 # print('老子天下无敌') # try: # # name # l = [1,2,3] # l[111] # # d = {'name':'jason'} # # d['password'] # except Exception: # 万能异常 所有的异常类型都被捕获 # print('老子天下无敌') # else: # print('被检测的代码没有任何的异常发生 才会走else') # finally: # print('无论被检测的代码有没有异常发生 都会在代码运行完毕之后执行我') # 主动抛异常 # if 'egon' == 'DSB': # pass # else: # raise TypeError('尽说大实话') # 关键字raise就是主动抛出异常 # l = [1,2,3] # assert len(l) < 0 # 断言 预言 # 猜某个数据的状态 猜对了 不影响代码执行 正常走 # 猜错了 直接报错 # 自定义异常 #9 自定义异常 class MyError(BaseException): def __init__(self,msg): super().__init__() self.msg=msg def __str__(self): return '<dfsdf%ssdfsdaf>' %self.msg raise MyError('我自己定义的异常') # 主动抛出异常其实就是将异常类的对象打印出来,会走__str__方法