语法
try:
'1'+'2'
1/0
except TypeError as e:#数据类型问题
print(e)
except ZeroDivisionError as e:#除数不能为零
print('除数不能为零',e)
except IndexError as e:#下标越界
print('下标错误')
except KeyError:#找不到字典的key
print('找不到字典的key')
except FileNotFoundError:#文件打不开
print('文件打不开')
except Exception as e:#所有异常均可以用Exception
print('出异常了',e)
else:#没有出异常,走else下的代码(没有异常的情况下,try里面的代码也是被执行了的)
print('没异常')
finally: #不管有没有异常,都要执行finally里的代码
print('aaa')
try…except…
f = open('xxx','w')
try:
f.write()
except: #只要出错就走except
print('走这块')
else:#没有出异常,走else下的代码
print('xxx')
finally:#不管写文件操作对不对,最后都要关闭文件
f.close()
可以打印出日志里红色报错信息/日志方式输出报错信息
import traceback
def is_price(s):
try:
f = float(s)
except Exception as e:
# traceback.print_exc() #直接打印日志里红色的报错信息
print('zijijiade .....',traceback.format_exc()) #traceback.format_exc()拿到报错信息,可以写到日志里
return False
else:
if f>0:
return True
异常处理的特殊用法:可以充当if…else 使用
例如:
try:
result = self.req.json() #将某个请求返回结果转换为json
except Exception as e:
return self.req.text #如果不能转换为json,就转换为文本
else:
result = NbDict(result)#如果没有异常,json解析成功了,那就把返回结果转换为字典