【问题标题】:Passing an specific error python [duplicate]传递特定错误python [重复]
【发布时间】:2016-07-04 11:16:44
【问题描述】:

我正在尝试通过这两个传递一个特定的键错误。

try:    
    per_visit_large_store = 100 * dic_data[mac]['Retail Store']['No. of visit to large store']/float(dic_data[mac]['Total no. of walk_in'])
except KeyError: 'Retail Store'
    pass

try:    
    per_visit_large_store = 100 * dic_data[mac]['Retail Store']['No. of visit to large store']/float(dic_data[mac]['Total no. of walk_in'])
except KeyError: 'Retail Store':
    pass

这两者都会分别引发缩进和语法错误。我到底做错了什么?我正在使用 python 2.7

【问题讨论】:

  • 如果密钥是“零售商店”,您是否试图仅捕获 KeyError?
  • @DanielRoseman 是的

标签: python-2.7 exception-handling


【解决方案1】:

语法不正确,应该是:

try:
    # some code there
except KeyError as e:
    caused_key = e.args[0]
    if caused_key == 'Retail Store':
        pass

Python Exception tutorial中查看更多信息

祝你好运:)!

【讨论】:

  • 这个会通过所有关键错误还是特别是'Retail Store ??
  • @ranadan 这将传递所有关键错误
  • 嗯,我正在寻找特定的 :)
  • @ranadan 查看更新后的答案。
【解决方案2】:

正确的语法是:

try:
    ...
except KeyError:
    pass

如果你想捕获一个特定的键,那么你需要检查错误信息:

d = {'a':1, 'b':2}
try:
    d['c']
except KeyError as e:
    if e.message == 'c':
        blah
    else:
        raise KeyError, e

这只会在键为“c”时继续代码。如果不是,则会引发错误。

【讨论】:

  • 这将传递我想要传递的所有关键错误。
  • 怎么等我也尝试一下。
  • @ranadan 等等我误解了:现在检查我的答案
猜你喜欢
  • 2018-04-07
  • 1970-01-01
  • 2019-01-01
  • 2016-01-05
  • 2020-08-01
  • 2017-02-25
  • 1970-01-01
  • 2016-01-24
  • 2021-12-18
相关资源
最近更新 更多