mirror of
https://github.com/fawney19/Aether.git
synced 2026-01-11 03:58:28 +08:00
- 新增 extract_error_message 工具函数,统一错误消息提取逻辑 - 在 HTTPStatusError 异常上附加 upstream_response 属性,保留原始错误 - 优先使用上游响应内容作为错误消息,而非异常字符串表示 - 移除错误消息的长度限制(500/1000 字符) - 修复边界条件检查,使用 startswith 匹配 "Unable to read" 前缀 - 简化 result.py 中的条件判断逻辑
29 lines
928 B
Python
29 lines
928 B
Python
"""
|
||
错误消息处理工具函数
|
||
"""
|
||
|
||
from typing import Optional
|
||
|
||
|
||
def extract_error_message(error: Exception, status_code: Optional[int] = None) -> str:
|
||
"""
|
||
从异常中提取错误消息,优先使用上游响应内容
|
||
|
||
Args:
|
||
error: 异常对象
|
||
status_code: 可选的 HTTP 状态码,用于构建更详细的错误消息
|
||
|
||
Returns:
|
||
错误消息字符串
|
||
"""
|
||
# 优先使用 upstream_response 属性(包含上游 Provider 的原始错误)
|
||
upstream_response = getattr(error, "upstream_response", None)
|
||
if upstream_response and isinstance(upstream_response, str) and upstream_response.strip():
|
||
return str(upstream_response)
|
||
|
||
# 回退到异常的字符串表示(str 可能为空,如 httpx 超时异常)
|
||
error_str = str(error) or repr(error)
|
||
if status_code is not None:
|
||
return f"HTTP {status_code}: {error_str}"
|
||
return error_str
|