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

如何实现代码忽略出错行继续执行并打印错误,无需逐行加try-except

批量处理代码行异常捕获的高效方法

方法一:封装通用执行函数

写一个能自动处理异常的工具函数,把要执行的代码逻辑用lambda传进去,就能替代重复的try-except:

def safe_run(code_block, desc=""):
    try:
        return code_block()
    except Exception as e:
        # 可选添加描述,方便定位哪行出错
        msg = f"[{desc}] 出错: {str(e)}" if desc else f"执行出错: {str(e)}"
        print(msg)

# 原来的代码行改成这样调用就行
safe_run(lambda: print(a), "打印变量a")
safe_run(lambda: print(b), "打印变量b")
safe_run(lambda: result = 100 / 0, "计算除法")
# 不管是打印、赋值还是函数调用,都可以这么套

方法二:用装饰器批量处理函数

如果你的代码是按函数拆分的,给每个函数加个装饰器就能自动加异常捕获:

def catch_exception(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            print(f"函数 {func.__name__} 执行出错: {str(e)}")
    return wrapper

# 给需要的函数贴装饰器
@catch_exception
def print_var_a():
    print(a)

@catch_exception
def print_var_b():
    print(b)

# 直接调用函数就行,异常会自动被捕获
print_var_a()
print_var_b()

方法三:动态逐行执行脚本(适合纯脚本代码)

如果你的代码是一堆零散的脚本行,可以把代码存到文件里,逐行读取并包裹异常执行:

# 假设代码都存在your_code.py文件里
with open("your_code.py", "r", encoding="utf-8") as f:
    code_lines = [line.strip() for line in f if line.strip() and not line.strip().startswith("#")]

for line_num, code in enumerate(code_lines, 1):
    try:
        exec(code)
    except Exception as e:
        print(f"第 {line_num} 行代码出错: {str(e)}")

⚠️ 注意:exec动态执行代码有安全风险,只用来处理你自己写的可信代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:55:26