潭州课堂25班:Ph201805201 第十四课 异常,处理 (课堂笔记)
程序难免会出现错误 :
语法错误 ;
逻辑错误;
AttributeError -->> 试图访问一个对象没有的属性,
IOError ----》》 输入输出异常
IndeError ---->> 下标索引起出序例范围,
KeyError --->>>> 试图访问字典里不存在的key
NameError ---->>. 使用一个还未被赋值的对象变量,
SyntaxError ----->>> 语法错误
TypeError ----->>>> 传入对象类型与要求的不符合,
UnboundLocalError ----->> 试图访问一个清空未被设置的局部变量,
ValueError -----》》》 传入一个调用者不期望的值,
捕捉异常:
try:
….
….
except:
print ('出错')
try:
f = open('我为什么是个文件.txt')
print (f. read() )
f.close()
except OSError:
print ('文件出错')
找不到”” 我为什么是个文件.txt”这个文件
try:
f = open('我为什么是个文件.txt')
print (f. read() )
f.close()
except OSError as reason:
print ('文件出错\n出错的原因是:'+str(reason))
———》》》》
文件出错
出错的原因是:[Errno 2] No such file or directory: '我为什么是个文件.txt'
try:
x = 1+'1'
f = open('我为什么是个文件.txt')
print (f. read() )
f.close()
except (OSError, TypeError): # 只要育错就抱错
print ('出错')
————》》》
出错
异常处理的细分写法:
# 异常处理的细分写法: try : li = [11,22] li[0] int ('abc') except IndexError as e: # 一层比一层高的级别 print('IndexError',e) except ValueError as f: print('ValueError',f) except Exception as h: print('Exception',h) else: # 如果上边不出错,就执行这里的代码 print('else') finally: # 不管出不出错,这里都 要执行, print('......')
断言,主动触发异常
主动触发异常: try: raise Exception('主动触发异常') except Exception as e: print(e) 断言: print(123) assert 1==1 # 断言,条件成立 往下走,不成立 报错 print(456)