Python中的KeyError异常处理

背景

在检查web服务器日志的时候,发现有KeyError的异常报错。检查了下出错的代码:

1
applyId = session['applyId']

应该是用户首次访问时,session为空,所以就获取异常了。

思路

根据上面的情况,KeyError就是在获取dict中不存在的key值时触发的。那么有解决方案就有两种:

  • 在读取key值的时候,先校验一下是否存在改key

    1
    2
    3
    4
    5
    6
    7
    d = {'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
    4
    d = {'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/