2013-08-19 28 views
0

我有一些代碼解析可能或可能不是有效的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) 

我所做的區別在於兩個:字符之間的「Extra data」或「Expecting」字符串。我假設我可以使用第一種方法與正則表達式來解析str(e),但如果有更直接的方法,那麼我想知道。作爲Python,我懷疑是有的!

+0

什麼是ValueError ['Extra data']'應該是什麼意思? – 2013-08-19 09:29:26

回答

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'] ..

+0

謝謝,這完全回答了我的懷疑。謝謝你的codez! – dotancohen