终止Python程序
在Python中,你用什么命令来结束一个程序呢?
就像在BASIC里用“end”,或者在BASH里用“quit”一样。
我看到“break”是用来跳出循环的,而“quit”又和“class”这些我还不太懂的东西扯上关系。
我试过
import sys
sys.exit()
但是会显示以下错误:
Traceback (most recent call last):
File "C:\Documents and Settings\....\Desktop\current file_hand\Python_1.py", line 131, in <module>
sys.exit()
SystemExit
有没有什么解决办法呢?
8 个回答
你也应该考虑其他的退出方式。通常情况下,如果把代码放在一个函数里,使用return
也能达到同样的效果。其实这样更好,因为它可以避免使用sys.exit()时的一些奇怪问题。
def main():
...do something...
if something:
return # <----- return takes the place of exit
...do something else...
main()
sys.exit()
会引发一个叫 SystemExit
的异常。
如果你不处理这个异常,程序就会结束。
既然你看到了这个输出,我不太确定发生了什么,但我猜测你可能是把所有的异常都捕捉了,然后自己打印出来:
try:
...
except:
print exception somehow
raise
如果是这样的话,最好不要这样做。应该改为捕捉 Exception
:
...
except Exception:
...
这样的话,你就不会捕捉到那些不应该被捕捉的东西(比如 SystemExit
)。
sys.exit(error_code)
这里的 error_code 是用来表示程序退出的状态的。正常退出时,error_code 是 0;如果因为某种错误退出,比如用户输入了错误的参数,error_code 就是 1 或其他正数。
在某些系统上,sys.exit() 可能会出现问题(不过我在我的 Linux 电脑上用的时候是没问题的!)
官方的 Python 文档 对这个内容有更详细的解释。
建议你在写程序和脚本时都遵循返回码的约定:0 表示一切正常,其他数字表示有错误(通常是 1)。
举个例子,如果你运行一个脚本从数据库中获取数据;返回 0 并且没有输出,说明数据库没问题,只是里面没有数据(或者没有符合你查询条件的数据)。如果返回 1 并且没有输出,那就说明数据库出现了故障,整个过程应该停止,因为继续下去可能会影响其他系统。