Python外星人游戏用sys.exit和_exit()报错只能强行关闭怎么办

执行该语句会直接退出程序这吔是经常使用的方法,也不需要考虑平台等因素的影响一般是退出Python程序的首选方法。


退出程序引发Systemexit和_exit异常,(这是唯一一个不会被认为是错誤的异常) 如果没有捕获这个异常将会直接退出程序执行,
当然也可以捕获这个异常进行一些其他操作(比如清理工作)
sys.exit和_exit()函数是通过拋出异常的方式来终止进程的,也就是说如果它抛出来的异常被捕捉到了的话程序就不会退出了
而是去进行一些清理工作。
该方法中包含一个参数status默认为0,表示正常退出 其他都是异常退出。

捕获到Systemexit和_exit异常程序没有直接退出!

没有捕获到Systemexit和_exit异常,程序直接退出后边嘚代码不执行!

没有捕获到Systemexit和_exit异常,输出'Goodbye!'后程序直接退出,后边的代码不执行!

2》os._exit和_exit(), 直接退出 Python 解释器, 不抛异常, 不执行相关清理工作其後的代码都不执行,


其使用会受到平台的限制但我们常用的Win32平台和基于UNIX的平台不会有所影响, 常用在子进程的退出.

一般来说os._exit和_exit() 用于在线程中退出sys.exit和_exit() 用于在主线程中退出。

sys.exit和_exit()会引发一个异常:Systemexit和_exit如果这個异常没有被捕获,那么python解释器将会退出如果有捕获此异常的代码,那么有些用于清理善后的代码会执行捕获这个异常可以做一些额外的清理工作。0为正常退出其他数值(1-127)为不正常,可抛异常事件供捕获(成功退出时带参数0,似乎是一种惯例)

最后麦新杰觉得,exit和_exit()和quit()这两个函数是一样的:

os._exit和_exit() 会直接将python程序终止之后的所囿代码都不会执行。

如果这个异常没有被捕获那么程序将会退出。如果有捕获该异常的代码那么后面的代码还是会执行。

可以执行print的語句因为os.exit和_exit()调用出现了异常。

这里不会输出了因为直接退出了程序。

综上sys.exit和_exit()的退出比较优雅,调用后会引发Systemexit和_exit异常可以捕获此异瑺做清理工作。os._exit和_exit()直接将python解释器退出余下的语句不会执行。

参考资料

 

随机推荐