捕获特定的子例外

时间:2013-08-19 09:24:12

标签: python exception

我有一些代码可以解析有效的JSON字符串,也可能不是。我想在except子句中捕获此异常:

ValueError: Extra data: line 1 column 1 - line 1 column 19 (char 1 - 19)

但不是这个例外:

ValueError: Expecting : delimiter: line 1 column 3 (char 3)

我会将其编码为此变体:

try:
    json.loads(user_sting)
except ValueError as e:
    # How to parse 'e' now?
    handle_error(e)

或者作为这个的变体:

try:
    json.loads(user_sting)
except ValueError['Extra data'] as e:
    handle_error(e)

我所做的不同之处在于两个:字符之间的“额外数据”或“期待”字符串。我认为我可以使用正则表达式的第一个方法来解析str(e),但如果有一个更简单的方法,那么我想知道。作为Python,我怀疑它有!

1 个答案:

答案 0 :(得分:3)

使用e.args代替str(e)

try:
    json.loads('""extra-data')
except ValueError as e:
    if e.args[0].startswith('Extra data:'):
        handle_error(e)
    else:
        raise

恕我直言,没有类似except ValueError['Extra data'] ..的语法糖。