退出时出现SystemExit和NameError问题

时间:2011-09-29 18:46:09

标签: python exit

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

1 个答案:

答案 0 :(得分:1)

通过提出SystemExit退出程序。这就是exit()的作用。有人错误地编写了一个捕获所有异常的异常处理程序。 这就是为什么你只能抓住你可以处理的例外情况。