2013-08-19 2 views
0

유효한 JSON 문자열인지 아닌지를 구문 분석하는 코드가 있습니다.특정 하위 예외 잡기

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

하지만이 예외 :

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

아니면 같은 :

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

내가이의 변종으로 코드겠습니까 나는 except 절에이 예외를 잡으려면 이 변형 :

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

내가 만드는 차이는 두 개의 : 문자 사이의 "추가 데이터"또는 "예상"문자열에 있습니다. 나는 첫 번째 방법을 정규식과 함께 str(e)을 구문 분석 할 수 있다고 가정하지만, 더 간단한 방법이있는 경우 알고 싶습니다. 파이썬이기 때문에 나는 거기에 있다고 생각합니다!

+0

'ValueError ['추가 데이터 ']'는 무엇을 의미합니까? –

답변

3

대신 사용 str(e)e.args :

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

IMHO는 except ValueError['Extra data'] .. 같은 어떤 구문 설탕 없습니다.

+0

고마워요, 이건 내 의혹에 정확하게 응답합니다. teh codez도 주셔서 감사합니다! – dotancohen