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
因此,如果exit正在生成此错误,那么我该如何退出呢?如果我为exit创建一个异常处理程序,是不是要用exit函数替换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
答案 0 :(得分:1)
通过提出SystemExit
退出程序。这就是exit()
的作用。有人错误地编写了一个捕获所有异常的异常处理程序。 这就是为什么你只能抓住你可以处理的例外情况。