如何实现代码忽略出错行继续执行并打印错误,无需逐行加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
相关产品推荐
相关产品推荐

