前言
python通过调用sys.exit(status)来退出程序,并且通过status指定退出时的状态码,exit()是Python内置模块sys的一个函数。需要先导入sys模块再使用exit。在程序执行过程中发现错误或满足某些条件,需要中止程序时,使用sys.exit()退出非常有用。1.1 用法
sys.exit(status=None, /)
1.2 描述
python的sys模块的exit函数,用于退出当前程序,并将status当作系统退出码。
若status为整数,将作为系统退出码。
若status为非整数,则status被打印,并且系统退出码置为1。
若status未送、或为None、或为0,则系统退出码为0,表示正常退出。
若status为非0,表示异常退出。
在调用 sys.exit() 后,脚本中位于其后的任何代码都不会被执行。
1.3 参数
status:状态码,可选。默认为None,对应状态码为0.
1.4 示例
1.4.1 未用exit
(1) 没有sys.exit时,程序正常退出,退出码为0.
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
print('梯阅线条')
执行结果,程序结束退出码为0。
(2) 没有sys.exit时,程序异常退出,退出码为1.
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容。
print('梯阅线条'+1)
执行结果,程序结束退出码为1.
1.4.2 exit(0)
调用sys.exit后,其后代码不执行,若status送0,即sys.exit(0),则退出码为0,表示程序正常退出。
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
import sys
print('执行开始')
sys.exit(0)
print('执行结束')
执行结果,使用sys.exit(0)结束程序,退出码为0,其后代码不会被执行。
1.4.3 exit(空)
若status未送,即sys.exit(),则退出码为0,表示程序正常退出。
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
import sys
print('执行开始')
sys.exit()
print('执行结束')
其中,“print('执行结束')”不会被执行。执行结果,使用sys.exit()结束程序,退出码为0,其后代码不会被执行。
1.4.4 exit(None)
若status送None,即sys.exit(None),则退出码为0,表示程序正常退出。
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
import sys
print('执行开始')
sys.exit(None)
print('执行结束')
执行结果,使用sys.exit(None)结束程序,退出码为0,其后代码不会被执行。
1.4.5 exit(1)
若status送1,即sys.exit(1),则退出码为1,表示程序异常退出。
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
import sys
print('执行开始')
sys.exit(1)
print('执行结束')
执行结果,使用sys.exit(None)结束程序,退出码为1,其后代码不会被执行。
1.4.6 exit(非整数)
若status送非整数,即sys.exit(非整数),则status将被打印,并且退出码为1,表示程序异常退出。
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
import sys
print('执行开始')
sys.exit('退出码非整数,会被打印,且退出码被置为1')
print('执行结束')
执行结果,status非整数时status被打印,退出码为1,其后代码不会被执行。
1.4.7 SystemExit
调用sys.exit(status)时,不管status是多少,都会触发SystemExit异常,不属于Exception类,使用traceback. format_exc()打印异常堆栈。
文件“02-PyQt5-程序基本结构分析-sys.exit.py”内容
import sys
import traceback
try:
print('执行开始')
# 调用 sys.exit() 触发 SystemExit 异常
sys.exit(0)
except SystemExit as se:
print('捕获SystemExit异常,退出码:', se)
# 打印异常堆栈
print(traceback.format_exc())
print('执行结束')
捕获sys.exit()触发的SystemExit异常后,之后的代码“print('执行结束')”是可以正常执行的,程序也是正常退出的。执行结果如下: