← 返回
未分类

GI Error Handling

Handle errors and logging following project conventions. Use when implementing exception handling, adding logs, or when the user asks for error handling patt...
遵循项目规范处理错误与日志。用于实现异常处理、添加日志或用户询问错误处理模式时。
laimiaohua
未分类 clawhub v1.0.0 1 版本 100000 Key: 无需
★ 0
Stars
📥 415
下载
💾 0
安装
1
版本
#latest

概述

Error Handling 错误处理与日志

按项目规范实现错误处理与日志记录。适用于 API 异常、业务错误、日志打点,便于排查问题。

何时使用

  • 用户请求「加错误处理」「加日志」「异常处理」
  • 实现 API 的异常返回
  • 排查问题时需要定位错误来源

异常处理

1. 业务异常

from tkms.exception.api import ApiException

# 抛出业务异常,会返回给前端
raise ApiException(code=400, message="用户不存在")
raise ApiException(code=401, message="未登录")
raise ApiException(code=403, message="无权限")
raise ApiException(code=404, message="资源不存在")
raise ApiException(code=500, message="服务器内部错误")
  • code:HTTP 状态码或业务错误码
  • message:返回给前端的错误信息,避免暴露内部细节

2. 参数校验

if not user_id:
    raise ApiException(code=400, message="用户ID不能为空")

if page < 1:
    raise ApiException(code=400, message="页码必须大于0")

3. 资源不存在

user = await self.user_dao.get_by_id(user_id)
if not user:
    raise ApiException(code=404, message="用户不存在")

4. 捕获并转换

try:
    result = await external_api.call()
except ConnectionError as e:
    raise ApiException(code=502, message="服务暂时不可用")
except Exception as e:
    # 记录详细日志,对外返回通用信息
    logger.exception("调用外部服务失败")
    raise ApiException(code=500, message="操作失败,请稍后重试")

日志规范

1. 打点位置

  • 接口入口:logger.info("接口名 入参")
  • 关键业务节点:logger.info("步骤 结果")
  • 异常:logger.exception("异常描述")logger.error("...")

2. 日志内容

  • 不输出密码、Token、完整卡号等敏感信息
  • 包含关键上下文:user_id、request_id、操作类型
  • 异常时记录堆栈便于排查

3. 示例

import logging
logger = logging.getLogger(__name__)

# 入口
logger.info("get_user_list", extra={"user_id": user_id, "page": page})

# 业务节点
logger.info("查询完成", extra={"count": len(rows)})

# 异常
logger.exception("数据库查询失败", extra={"sql": sql_safe})

统一响应格式

成功:

{"code": 0, "message": "success", "data": {...}}

失败(由 ApiException 触发):

{"code": 400, "message": "用户不存在"}

前端错误处理

  • 根据 code 区分:401 跳登录、403 提示无权限、其他展示 message
  • 网络错误:统一提示「网络异常,请稍后重试」

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-30 18:34 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

GI Excel PDF Process

laimiaohua
处理Excel和PDF文件——提取数据、解析表格、生成报告。适用于处理.xlsx、.xls、.csv、.pdf文件,或用户提及电子表格...
★ 0 📥 731

GI Security Audit

laimiaohua
审计代码安全问题,包括敏感数据泄露、依赖漏洞、SQL注入、硬编码密钥等。用于用户询问安全相关问题时。
★ 0 📥 776

GI Database Query Patterns

laimiaohua
使用 tkms AsyncSqlSessionTemplate 编写数据库查询,适用于实现 DAO 层、编写 SQL,或在用户请求数据库操作时使用。
★ 0 📥 1,043