程序难免会出现错误 :
语法错误 ;
逻辑错误;
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)