如何提取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
相关产品推荐
相关产品推荐

