关于 ln-772-error-handler-setup
为 .NET 和 Python 后端项目配置全局异常处理,生成对应框架的处理器与自定义异常,并验证配置结果。
主要功能
- 01配置 ASP.NET Core 中间件或 FastAPI 处理器
- 02生成自定义异常类和错误模型
- 03支持 ProblemDetails 与按环境区分详情
- 04检查现有配置以避免重复
- 05验证生成代码和错误响应
适用场景
- 01为 ASP.NET Core 项目添加集中式异常处理
- 02为 FastAPI 配置自定义异常和校验错误处理器
- 03生产环境隐藏堆栈信息,开发环境显示详情
MCP 相关
使用 MCP 工具查询最新的 ASP.NET Core 和 FastAPI 错误处理模式。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-772-error-handler-setup安装后在 Claude Code 中输入/ln-772-error-handler-setup确认已加载。
详细介绍
ln-772-error-handler-setup
类型: L3 Worker 类别: 7XX 项目引导
为 .NET 和 Python 后端应用配置全局错误处理。
概述
| 方面 | 详情 |
|---|---|
| 输入 | 来自 ln-770 的 Context Store |
| 输出 | 异常处理中间件和自定义异常 |
| 技术栈 | .NET(ASP.NET Core 中间件)、Python(FastAPI 异常处理器) |
阶段 1:接收上下文
从协调器接收 Context Store。
必需上下文:
STACK:.NET 或 PythonFRAMEWORK:ASP.NET Core 或 FastAPIPROJECT_ROOT:项目目录路径ENVIRONMENT:Development 或 Production
幂等性检查:
- .NET:搜索
GlobalExceptionMiddleware或UseExceptionHandler - Python:搜索
@app.exception_handler或exception_handlers.py - 如果找到:返回
{ "status": "skipped" }
阶段 2:调研错误处理模式
使用 MCP 工具获取最新文档。
针对 .NET:
MCP ref: "ASP.NET Core global exception handling middleware"
Context7: /dotnet/aspnetcore
针对 Python:
MCP ref: "FastAPI exception handlers custom exceptions"
Context7: /tiangolo/fastapi
需要调研的关键模式:
- 中间件管道中的位置
- 异常类型到 HTTP 状态码的映射
- ProblemDetails(RFC 7807)格式
- Development 与 Production 环境中的错误详情
- 日志集成
阶段 3:决策点
Q1:错误响应格式
| 选项 | 描述 |
|---|---|
| ProblemDetails(RFC 7807)(推荐) | 标准化格式,广泛采用 |
| 自定义格式 | 项目特定要求 |
Q2:错误详情级别
| 环境 | 堆栈跟踪 | 内部异常 | 请求详情 |
|---|---|---|---|
| Development | ✓ 显示 | ✓ 显示 | ✓ 显示 |
| Production | ✗ 隐藏 | ✗ 隐藏 | ✗ 隐藏 |
Q3:错误分类
定义标准错误代码:
| 代码 | HTTP 状态 | 描述 |
|---|---|---|
VALIDATION_ERROR | 400 | 输入数据无效 |
UNAUTHORIZED | 401 | 需要身份验证 |
FORBIDDEN | 403 | 权限不足 |
NOT_FOUND | 404 | 未找到资源 |
CONFLICT | 409 | 资源状态冲突 |
INTERNAL_ERROR | 500 | 意外的服务端错误 |
阶段 4:生成配置
.NET 输出文件
| 文件 | 用途 |
|---|---|
Middleware/GlobalExceptionMiddleware.cs | 异常处理中间件 |
Exceptions/AppException.cs | 基础异常类 |
Exceptions/ValidationException.cs | 验证错误 |
Exceptions/NotFoundException.cs | 未找到错误 |
Models/ErrorResponse.cs | 错误响应模型 |
生成流程:
- 使用 MCP ref 获取当前 ASP.NET Core 异常处理模式
- 生成 GlobalExceptionMiddleware,其中包含:
- 异常类型到 HTTP 状态码的映射
- 异常日志记录
- ProblemDetails 响应格式
- 根据环境调整详情级别
- 生成自定义异常类
注册代码:
app.UseMiddleware<GlobalExceptionMiddleware>();
Python 输出文件
| 文件 | 用途 |
|---|---|
exceptions/app_exceptions.py | 自定义异常类 |
exceptions/handlers.py | FastAPI 异常处理器 |
models/error_response.py | Pydantic 错误模型 |
生成流程:
- 使用 MCP ref 获取当前 FastAPI 异常处理模式
- 生成异常处理器,其中包含:
- HTTPException 处理
- 自定义 AppException 处理
- 验证错误处理
- 请求验证错误处理
- 生成自定义异常类
注册代码:
app.add_exception_handler(AppException, app_exception_handler)
app.add_exception_handler(RequestValidationError, validation_exception_handler)
阶段 5:验证
验证步骤:
-
语法检查:
- .NET:
dotnet build --no-restore - Python:
python -m py_compile exceptions/handlers.py
- .NET:
-
测试错误处理:
- 创建会抛出异常的测试端点
- 验证错误响应格式
- 检查 Production 环境中是否隐藏堆栈跟踪
预期错误响应(ProblemDetails):
{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "Validation Error",
"status": 400,
"detail": "Invalid input data",
"instance": "/api/users",
"errors": [
{ "field": "email", "message": "Invalid email format" }
],
"traceId": "abc-123-def-456"
}
返回协调器
{
"status": "success",
"files_created": [
"Middleware/GlobalExceptionMiddleware.cs",
"Exceptions/AppException.cs",
"Models/ErrorResponse.cs"
],
"packages_added": [],
"registration_code": "app.UseMiddleware<GlobalExceptionMiddleware>();",
"message": "Configured global exception handling"
}
参考链接
关键规则
- 默认使用 ProblemDetails (RFC 7807) — 标准化的错误响应格式
- 在 Production 中隐藏堆栈跟踪 — 必须根据环境调整详情级别
- 使用 MCP ref 获取当前模式 — 不要凭记忆硬编码中间件
- 保持幂等 — 如果已存在
GlobalExceptionMiddleware或exception_handlers.py,返回status: "skipped" - 将所有自定义异常映射到 HTTP 状态码 — 不得有未处理的异常类型传递给客户端
完成标准
- 已接收 Context Store(技术栈、框架、环境)
- 已通过 MCP 工具研究错误处理模式
- 已生成 GlobalExceptionMiddleware(.NET)或异常处理器(Python)
- 已创建自定义异常类(AppException、ValidationException、NotFoundException)
- 已创建错误响应模型(ProblemDetails 格式)
- 已验证语法(
dotnet build或py_compile) - 已向 ln-770 协调器返回结构化 JSON 响应
版本: 2.0.0 最后更新: 2026-01-10
评论
支持 Markdown