2
누락되었습니다파이썬 : sys.exc_info()는이 같은 예외를 캐치 코드를 파이썬에서 지역 변수
try:
<do stuff>
except:
exc_info = sys.exc_info()
내가 실행 해요 문제는 그 역 추적 객체 (exc_info [ 2])는 traceback 객체에서 비 결정적으로 누락 된 지역 변수입니다. 나는 똑같은 코드를 실행하고 때로는 변수가 tb.tb_frame.f_locals에 있고 때로는 그렇지 않기 때문에 이것을 사실로 알고 있습니다. 전역 변수는 tb.tb_frame.f_globals에서 항상 정확합니다.
f_locals 구조를 채우는 것은 무엇입니까? 지역 변수 사전이 때때로 비어있는 원인은 무엇입니까?
코드에 비 결정 성이 있어야하는 것처럼 들립니다. 실? 네트워크 I/O? 아무것도? –
Ned와 동의합니다. tb_frame은 실제로 호출 코드의 프레임이며, 변수가 없으면 설정되지 않습니다. 글쎄, re-raised 예외는 tb 객체를 유지하므로 프레임이 여러분이 생각하는 범위를 가리키고 있지 않을 수도 있습니다. –