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

如何提取Python异常核心信息以实现错误分组?

提取核心错误信息实现错误分组

解决方案思路

你的错误信息格式固定,前半部分包含错误码、UUID等不影响分组的唯一标识,核心错误内容在UUID之后。可以通过字符串分割或正则表达式提取这部分核心内容,用于持久化和分组。

方法一:字符串分割法

利用错误字符串的结构(第二个冒号后为核心内容),直接截取并处理格式:

def extract_core_error(e):
    error_str = str(e)
    # 定位所有冒号的位置
    colon_positions = [idx for idx, char in enumerate(error_str) if char == ':']
    if len(colon_positions) >= 2:
        # 从第二个冒号后截取,去除首尾空格并替换换行符
        core_error = error_str[colon_positions[1]+1:].strip().replace('\n', ' ')
        return core_error
    # 格式不符合时返回原错误信息
    return error_str

方法二:正则表达式匹配法

针对UUID的固定格式,用正则精准定位并提取核心错误:

import re

def extract_core_error(e):
    error_str = str(e)
    # 匹配UUID模式(兼容大小写,处理可能的格式偏差)
    uuid_pattern = r'[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}:\s*(.*)'
    match_result = re.search(uuid_pattern, error_str, re.IGNORECASE)
    if match_result:
        # 提取匹配到的核心内容,替换换行符为空格
        return match_result.group(1).replace('\n', ' ')
    return error_str

实际使用示例

在异常捕获块中调用提取函数,持久化核心错误信息:

try:
    # 你的业务逻辑代码
    execute_sql("seelect * from table")
except Exception as e:
    core_error = extract_core_error(e)
    persist(core_error)  # 存储核心错误,用于后续分组

这样处理后,数据库中存储的failure_reason会是统一的核心错误内容,比如SQL compilation error: syntax error line 1 at position 0 unexpected 'seelect',可以直接按该字段进行错误分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:47:11