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

如何实现仅在fun_a()无错执行时调用fun_b()并在出错时终止脚本

实现fun_a无错才执行fun_b的脚本逻辑

这事儿用Python的异常捕获机制就能轻松搞定,咱们直接上代码和解释:

核心实现代码

import sys

def fun_a():
    # 替换成你实际的fun_a业务逻辑
    # 若要模拟出错,可取消下面这行注释:
    # raise RuntimeError("fun_a内部出错了")
    print("fun_a执行完成,无异常")

def fun_b():
    # 替换成你实际的fun_b业务逻辑
    print("fun_b开始执行")

try:
    # 尝试执行fun_a
    fun_a()
except Exception as e:
    # 捕获fun_a抛出的所有异常,输出指定提示并终止脚本
    print("脚本在fun_a()处中断")
    # 用sys.exit()终止脚本,状态码1表示异常退出
    sys.exit(1)

# 只有当fun_a无异常时,才会走到这里执行fun_b
fun_b()

代码逻辑解释

  • try-except块的作用:把fun_a()放在try块里,只要它执行时抛出任何异常,就会立刻跳转到except块执行。
  • 异常处理分支:在except里,我们先输出你要求的错误提示,然后调用sys.exit(1)终止整个脚本——这里的1是异常退出的状态码,和正常结束的0做区分,方便后续排查问题。
  • 正常执行分支:如果fun_a()全程没抛出异常,就会跳过except块,直接执行后面的fun_b(),完美符合你的需求。

进阶优化:捕获特定异常

如果你不想捕获所有异常(比如只处理fun_a可能抛出的特定错误类型),可以把Exception换成具体的异常类,比如:

try:
    fun_a()
except ValueError as e:
    print("脚本在fun_a()处中断")
    sys.exit(1)

这样只有当fun_a抛出ValueError时才会触发中断,其他类型的异常会正常向上抛出,不会被这个块捕获。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:46:33