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
最佳答案
您可以通过调用 SystemExit
退出程序。这就是 exit()
所做的。有人错误地编写了捕获所有异常的异常处理程序。 这就是为什么您只捕获您可以处理的异常。
关于python - 退出时出现 SystemExit 和 NameError 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7601947/