(1)异常概念:
(1)当程序在运行的时候 出现未知的错误
(2)如果没有进行处理 会呈现出异常 程序随之结束
(2)异常类型:
(1)语法错误:
(1)错误能立马发现 且作为程序与不能容忍语法错误
(2)如果发现语法错误 需要立马改正
(2)逻辑错误:
(1)程序在运行的时候 出现不可预知或者不可避免的错误
(2)针对该种错误可以通过异常捕获处理:
(3)常见的错误类型:
(1)NAMERROR 名字错误
(2)SyntaxError 语法错误
(3)KeyError 键不存在
(4)ValueError 值错误
(5)IndexError 索引错误
(1)如果针对错误是不能提前预知的 可以使用try....except.... 在错误发生之后进行处理
例如:
try: 被检测的代码块 except 异常类型: try中一旦检测到异常,就执行这个位置的逻辑 #举例 try: f=open(‘a.txt‘) g=(line.strip() for line in f) print(next(g)) print(next(g)) print(next(g)) print(next(g)) print(next(g)) except StopIteration: f.close()
(2)可以根据条件进行异常处理 如果错误条件可以提前预知 我们可以通过if进行处理 防止错误发送
例如:
AGE=10 while True: age=input(‘>>: ‘).strip() if age.isdigit(): #只有在age为字符串形式的整数时,下列代码才不会出错,该条件是可预知的 age=int(age) if age == AGE: print(‘you got it‘) break
(3)Exciption/BaseException
作用:当可能出现大量的异常的时候 其可以匹配任意类型的错误
例如:
try: name l = [1,2,3] l[111] d = {‘name‘:‘jason‘} d[‘password‘] # Exception except BaseException: # 万能异常 所有的异常类型都被捕获 print(‘老子天下无敌‘)
(5)finally:
作用:无论有没有异常 最后都会执行我
例如:
try: # name l = [1,2,3] l[111] # d = {‘name‘:‘jason‘} # d[‘password‘] except Exception: # 万能异常 所有的异常类型都被捕获 print(‘老子天下无敌‘) else: print(‘被检测的代码没有任何的异常发生 才会走else‘) finally: print(‘无论被检测的代码有没有异常发生 都会在代码运行完毕之后执行我‘)
rasie:
作用:主动抛出异常
例如:
主动抛异常 if ‘egon‘ == ‘DSB‘: pass else: raise TypeError(‘尽说大实话‘) 关键字raise就是主动抛出异常
assert:
作用:猜测数据的状态 猜对了正常执行 猜错了抛出异常
例如:
主动抛异常 if ‘egon‘ == ‘DSB‘: pass else: raise TypeError(‘尽说大实话‘) 关键字raise就是主动抛出异常
自定义异常:
作用:可以继承BaseException 通过该类可以自定义自己异常
例如:
class MyError(BaseException): def __init__(self,msg): super().__init__() self.msg=msg def __str__(self): return ‘<dfsdf%ssdfsdaf>‘ %self.msg raise MyError(‘我自己定义的异常‘)
原文:https://www.cnblogs.com/SR-Program/p/11324422.html