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

如何让Python捕获AssertionError后打印信息并继续执行逻辑?

处理AssertionError并让程序继续执行的解决方案

嘿,这问题其实很好搞定!默认情况下,assert语句失败时会直接抛出AssertionError并终止程序,但我们可以用Python的异常捕获机制来拦截这个错误,打印你想要的信息,然后让程序继续跑后续逻辑。

具体实现思路

核心就是用try-except代码块包裹可能触发断言错误的逻辑:

  • 把可能触发AssertionError的代码放在try块里
  • 在except块中专门捕获AssertionError,打印指定提示
  • 处理完错误后,程序会自动跳转到try-except块之后的代码继续执行

结合你的场景的代码示例

结合你导入的模块,假设你的逻辑是读取PLC数据后做断言验证,示例代码如下:

from cpppo.server.enip.get_attribute import proxy_simple
from datetime import datetime
import time, csv, sys

def process_plc_data():
    # 初始化PLC代理并读取数据
    plc_proxy = proxy_simple(host="your_plc_host")
    tag_data = plc_proxy.read(("target_tag",))
    
    try:
        # 这里是你需要验证的断言逻辑
        assert tag_data["target_tag"] <= 100, "数据超出阈值"
        print("断言验证通过,执行正常流程")
    except AssertionError:
        # 捕获断言错误,打印你需要的信息
        print("Assertion Error")
        # 若需要查看具体失败原因,可添加这行:
        # print(f"错误详情: {str(e)}")
    
    # 以下是后续要执行的逻辑,无论断言是否失败都会运行
    print("开始执行后续处理...")
    with open("plc_log.csv", "a", newline="") as log_file:
        writer = csv.writer(log_file)
        writer.writerow([datetime.now(), tag_data.get("target_tag", "读取失败")])

# 模拟循环执行的业务逻辑
while True:
    process_plc_data()
    time.sleep(3)

注意事项

  • 不要过度依赖这种方式:断言本质是用来做调试和逻辑验证的,如果是生产环境需要处理的预期错误,更推荐用if条件判断主动处理,而非捕获断言异常。
  • 若需要定位具体失败原因,可以在except后加上as e,比如except AssertionError as e:,然后打印e来查看断言的自定义提示。

这样修改后,当断言触发错误时,程序会打印你要的“Assertion Error”,然后继续执行后续的日志写入等逻辑,不会直接终止啦!

内容的提问来源于stack exchange,提问作者Bitcoin Murderous Maniac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:06:36