2013-06-18 3 views
8

빈 오류 메시지 오류를 디버그하려고하는데, 처음에는 예외를 실행하고 나중에 try/except 블록을 넣으면 오류를 인쇄합니다.비공개 오류 메시지 파이썬

try: 
    #some code 
except BaseException, e: 
    print str(e) 

이렇게하면 공백의 출력이 생길 수 있습니다.

편집 : 죄송합니다. 오류 메시지가 비어있을 수있는 구체적인 이유가 있었으면합니다. 스택 트레이스 출력이 없기 때문에 처음부터 try/except 블록을 수행하도록 강요 당했고, 여전히이 문제를 프로그래밍하고 있으므로 '컴파일러'가 오류를 잡아낼 수있게합니다. 오류를 던지고있는 실제 코드는 Django 응용 프로그램에 있으므로 Django의 일부 기능을 갖습니다.

try: 
    if len(request.POST['dateToRun']) <= 0: 
     dateToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[0] 
    if len(request.POST['timeToRun']) <= 0: 
     timeToRun = Job.objects.filter(id=jobIDs[i]).values()['whenToRun'].split(' ')[1] 
except BaseException, e: 
    print str(e) 

이것은보기 기능의 코드입니다. jobIDs는 ## Selection : ## (즉, 17Selection : 17) 형식의 값 키 쌍을 포함하는 사전입니다. 죄송합니다. 처음 게시하는 것을 잊어 버렸습니다.

EDIT : repr (e)는 나에게 TypeError()를주었습니다. 아무 것도 모르는 것보다 낫습니다.

try: 
    raise Exception() 
except BaseException, e: 
    print str(e) 

사용 repr(e) 예외가 제기 된 상황을 확인하기 :

+1

스택 추적 결과와 실제 코드를 제공하면 도움이 될 수 있습니다. –

답변

4

다음은 출력의 빈 줄을 생성합니다.

9

예외가 메시지에 첨부되어 있지 않음을 의미합니다.

print repr(e) 

또한 역 추적을 인쇄 할 수 있습니다 :

import traceback 

# ... 
except BaseException as e: 
    traceback.print_exc() 

당신이 원하는 피하기BaseException 그러나,이 담요 except: 문보다 낫다 잡기 에 예외 유형를 인쇄합니다. 대신보다 구체적인 예외를 잡으십시오.

1

불쾌한 줄을 찾을 때까지 try/except 블록을 코드의 더 작은 섹션 주위에 놓습니다. 예를 들어, 당신이있는 경우 :

try: 
    a = fn(b) 
    c = fn(a) 
except BaseException, e: 
    print str(e) 

다음으로 변경 :

a = fn(b) 
try: 
    c = fn(a) 
except BaseException, e: 
    print str(e) 
4

사용하십시오 :

try: 
    #code 
except BaseExeption as e: 
    print str(e) 

이는 이해하기 쉬운, 그리고 정서적 인 것 같다.

관련 문제