Python Exception不会输出整个异常

时间:2019-02-12 18:49:26

标签: python-3.x exception-handling try-catch

我有一本这样的字典:

from collections import Counter
new_dict = {}
for k in d.keys():
  aux_counter = Counter(d[k])
  new_dict [k] = {}
  for c, v in zip(aux_counter.keys(), aux_counter.values()):
    new_dict[k][c] = v

当我运行以下命令时

js = {'value': {'boot': {'delay': 0} } }

我得到print(js['value']['boot']['delay']) ,这是我期望得到的行为。

运行以下命令

0

我得到print(js['value']['booooot']['delay']) ,这也是预期的。

但是,当我将所有这些都包装到try / except中并打印异常时,我没有得到预期的错误。

KeyError: 'booooot'

我刚刚在控制台def myfunc(js): try: js['value']['booooot']['delay'] except Exception as e: print(e) 上获得了以下内容

我是否应该像在try / except块之外运行打印一样得到'booooot'

1 个答案:

答案 0 :(得分:0)

import sys
def func(js):
    try:
        print(js['value']['boooot']['delay'])
    except:
        print("Error Information: " + str(sys.exc_info()))

js = {'value': {'boot': {'delay': 0} } }
func(js)

命令sys.exc_info()将以元组的形式返回异常信息,其中索引0是错误类型,索引1包含错误本身。 上面的代码会打印出来

Error Information: (<class 'KeyError'>, KeyError('boooot'), <traceback object at 0x01867558>)

感谢您的提问!希望这会有所帮助。