You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何在循环调用含多sys.exit()的函数时,仅特定退出码触发循环继续其余则终止程序

区分SystemExit异常,实现按需循环/终止

嘿,这个问题的关键在于识别SystemExit异常携带的退出参数——你调用sys.exit(xxx)时,xxx会被作为异常对象的args属性保存下来,我们可以通过检查这个值来区分不同的退出场景,进而实现你的需求。

修改后的完整代码

import sys

def exit_sample(test):
    if test == 'continue':
        sys.exit(0)
    else:
        sys.exit("exit")

# 注意:别用`list`当变量名,会覆盖Python内置的list类型
test_items = ["continue", "exit", "last"]
for item in test_items:
    try:
        exit_sample(item)
    except SystemExit as e:
        # 取出sys.exit传入的参数
        exit_code = e.args[0]
        if exit_code == 0:
            # 符合继续循环的条件,跳过当前循环进入下一次
            print("触发continue场景,继续下一次循环")
            continue
        else:
            # 不符合,重新抛出异常终止程序
            print("触发exit场景,终止程序")
            raise

执行逻辑说明

  1. 第一次循环(item="continue"):sys.exit(0)抛出SystemExit,捕获后检查到exit_code是0,执行continue,直接进入下一次循环,不会终止程序
  2. 第二次循环(item="exit"):sys.exit("exit")抛出SystemExit,捕获后exit_code不是0,我们重新抛出这个异常,程序会直接终止,第三次循环根本不会执行

小提醒

别用list作为变量名哦,这会覆盖Python自带的list类型,后续如果需要创建列表可能会出问题,我把变量改成了test_items。

内容的提问来源于stack exchange,提问作者confused_certainties

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 15:29:07