2012-01-26 3 views
3

내 프로세스가 종료되는 오류를 기록하려고하는데 traceback.print_tbtraceback.print_exc은 발생한 오류를 인식하지 못합니다.등록 된 atexit 함수에서 오류 추적 가져 오기

즉, 왜 'DivisionByZero .. 등'대신 'None \ n'이 인쇄됩니까? (편집 :? .. ​​그리고 내가 exit_fn 내에서 제기/처리 오류에 대한 액세스 권한을 얻는 방법)

import traceback, atexit 

def exit_fn(): 
    print 'exiting' 
    if traceback.format_exc().startswith('None'): 
     print 'why is this None?' 

atexit.register(exit_fn) 

x = 1/0 
나는 당신의 루틴이 호출 된 시간, 예외가 이미 '처리'된 것으로 생각
+0

도움이 될 수 있습니다. http://stackoverflow.com/questions/9741351/how-to-find-exit-code-or-reason-when-atexit-callback-is-called-in-python – e9t

답변

1

(적어도 당신의 코드를 실행할 때, 나는 당신이 print 호출을 제거하더라도 traceback을 본다.) 그래서 그 시점에서 아무 것도 포맷되지 않는다.