python - 退出时出现 SystemExit 和 NameError 问题

标签 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

如果退出产生了这个错误,我该如何退出呢?如果我为退出创建一个异常处理程序,这不会替换 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/

相关文章:

python - 使用 matplotlib 或 PIL 将 3d numpy 数组绘制为 3d 图像

python - pydev 无法识别 django 安装

c++ - 跳过 C++ 全局析构函数

python - 在辅助驱动器上安装 Anaconda (Windows)

python - 属性错误:模块 'tensorflow' 没有属性 'RunOptions'

Python - 从数据框中提取信息 (JSON)

c++ - C++ 程序应该在他按下 'esc' 时立即退出

android - 退出子 Activity 时如何完成所有 Activity

java - 如何创建一个函数来完全退出程序?

c - fork 的子进程以 -1 退出,但 WEXITSTATUS 得到 255