退出时的SystemExit和NameError问题
def main():
try:
print "hardfart"
return 0
except:
return 1
if __name__ == '__main__':
exit(main())
有没有哪位好心的程序员能告诉我,为什么在退出时会出现以下错误?
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
在一个类似的项目中,退出时也出现了错误。在那个项目里,我用gui2exe编译了一个exe文件,关闭程序时就出现了这个相关的错误:
Traceback (most recent call last):
File "checkHDBox.py", line 303, in <module>
NameError: name 'exit' is not defined
那么,如果退出时会产生这个错误,那我该怎么退出呢?如果我为退出创建一个异常处理器,这是不是就替代了Python在执行退出时的默认操作呢?
谢谢。
编辑:
我想这可能回答了我自己的问题。
这里的错误追踪信息来自IDLE,我觉得这是我在其他地方看到的默认行为。
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
通过使用sys.exit()而不是exit(0),这个错误追踪信息得到了修复。
Traceback (most recent call last):
File "checkHDBox.py", line 303, in <module>
NameError: name 'exit' is not defined
1 个回答
1
你可以通过抛出 SystemExit
来退出一个程序。这就是 exit()
的作用。有些人错误地写了一个异常处理程序,它会捕捉所有的异常。这就是为什么你只应该捕捉那些你能处理的异常。