背景
在检查web服务器日志的时候,发现有KeyError
的异常报错。检查了下出错的代码:
1 | applyId = session['applyId'] |
应该是用户首次访问时,session为空,所以就获取异常了。
思路
根据上面的情况,KeyError
就是在获取dict
中不存在的key
值时触发的。那么有解决方案就有两种:
在读取
key
值的时候,先校验一下是否存在改key
:1
2
3
4
5
6
7d = {'a': 1,
'b': 2,
'c': 3}
if 'd' in d:
print(d['d'])
else:
print('not exists!')输出:
1
not exists!
在读取
dict
时,设置default
值。这时候需要使用dict
内置的get(key[,default])
方法:1
2
3
4d = {'a': 1,
'b': 2,
'c': 3}
print(d.get('d', 'not exits!'))输出:
1
not exists!
结论
最后采用了方法二,如果没有该key
,就设置默认为空''
。
1 | applyId = session.get('applyId', '') |
后续再涉及到dict
的时候都要注意下默认值的处理,避免出现KeyError
的方法还有其他几种方法,可以参考如下的链接,会比较麻烦一点:
https://blog.csdn.net/u011089523/article/details/72887163/