2011-09-29 1 views
2
def main(): 
    try: 
     print "hardfart" 
     return 0 
    except: 
     return 1 

if __name__ == '__main__': 
    exit(main()) 

한 종류의 프로그래머가 종료시 다음과 같은 오류가 발생하는 이유를 설명 할 수 있습니까?종료시 SystemExit 및 NameError 문제

Traceback (most recent call last): 
File "C:/Apps/exp_exit.py", line 9, in ,module. 
exit(main()) 
File "C:\Apps\python2.7.2\lib\site.py", line 372 in __call__ 
    raise SystemExit(code) 
SystemExit: 0 

이렇게 설정 한 프로젝트에서 종료시 오류가 발생합니다. 종료이 오류가 발생하는 경우

Traceback (most recent call last): 
    File "checkHDBox.py", line 303, in <module> 
NameError: name 'exit' is not defined 

그래서, 어떻게 다음 종료 않습니다 프로그램을 닫을 때 해당 프로젝트의 경우, EXE 파일을 컴파일 gui2exe 사용 후, 나는이 관련 오류가? 그리고 exit를위한 예외 핸들러를 생성한다면, 파이썬이 exit 함수를 사용하는 기본 액션을 대체하지 않습니까?

감사합니다.

편집 :

이 질문에 대한 답변입니다.

여기서 추적은 IDLE에서 가져온 것입니다. 읽은 다른 소스의 기본 동작이라고 생각합니다. 여기 sys.exit를 사용하여 고정

Traceback (most recent call last): 
File "C:/Apps/exp_exit.py", line 9, in ,module. 
exit(main()) 
File "C:\Apps\python2.7.2\lib\site.py", line 372 in __call__ 
    raise SystemExit(code) 
SystemExit: 0 

역 추적() 대신 출구의 (0)

Traceback (most recent call last): 
    File "checkHDBox.py", line 303, in <module> 
NameError: name 'exit' is not defined 

답변

1

당신은 SystemExit을 제기하여 프로그램을 종료합니다. 이것은 exit()입니다. 누군가 모든 예외를 포착하는 예외 처리기를 잘못 작성했습니다. 당신이 처리 할 수있는 예외만을 잡는 이유가 여기에 있습니다.

+1

긁힘. 이 추적은 IDLE에서 온 것입니다. 모든 종료 호출에서 해당 추적을 가져 오는 의도 된 기능인지 알 수 있습니까? –