在 Python 中,程序遇到异常时的退出行为取决于是否对异常进行了捕获和处理:
-
未捕获的异常:
如果异常发生后没有被try-except
语句捕获,程序会立即终止,并返回一个非零的退出码(通常是1
),同时打印异常信息(包括错误类型、描述和堆栈跟踪)。例如:
print(1 / 0) # 触发 ZeroDivisionError 且未捕获 print("这段代码不会执行") # 程序已退出
运行后会直接崩溃,退出码为
1
。 -
捕获并处理异常:
如果用try-except
捕获了异常,程序会跳过异常发生的位置,继续执行except
块及之后的代码,不会退出,退出码为0
(正常结束)。例如:
try:print(1 / 0) except ZeroDivisionError:print("捕获到除零错误") print("程序继续执行") # 这句会正常执行
运行后程序不会退出,最终退出码为
0
。 -
主动退出:
可以通过sys.exit(n)
主动指定退出码,n
为整数(0
表示正常退出,非零表示异常退出)。例如:
import sys try:print(1 / 0) except:sys.exit(2) # 主动指定退出码为 2 并退出
总结:
- 未处理的异常会导致程序退出,退出码非零;
- 处理后的异常不会终止程序,退出码为 0(除非主动调用
sys.exit
指定非零值)。