ln-772-error-handler-setup
Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-770-crosscutting-setup
Configures global error handling for .NET and Python backend applications.
Overview Aspect Details Input Context Store from ln-770 Output Exception handling middleware and custom exceptions Stacks .NET (ASP.NET Core Middleware), Python (FastAPI exception handlers) Phase 1: Receive Context
Accept Context Store from coordinator.
Required Context:
STACK: .NET or Python FRAMEWORK: ASP.NET Core or FastAPI PROJECT_ROOT: Project directory path ENVIRONMENT: Development or Production
Idempotency Check:
.NET: Grep for GlobalExceptionMiddleware or UseExceptionHandler Python: Grep for @app.exception_handler or exception_handlers.py If found: Return { "status": "skipped" } Phase 2: Research Error Handling Patterns
Use MCP tools to get up-to-date documentation.
For .NET:
MCP ref: "ASP.NET Core global exception handling middleware" Context7: /dotnet/aspnetcore
For Python:
MCP ref: "FastAPI exception handlers custom exceptions" Context7: /tiangolo/fastapi
Key Patterns to Research:
Middleware pipeline positioning Exception type mapping to HTTP status codes ProblemDetails (RFC 7807) format Development vs Production error details Logging integration Phase 3: Decision Points Q1: Error Response Format Option Description ProblemDetails (RFC 7807) (Recommended) Standardized format, widely adopted Custom Format Project-specific requirements Q2: Error Detail Level Environment Stack Trace Inner Exceptions Request Details Development ✓ Show ✓ Show ✓ Show Production ✗ Hide ✗ Hide ✗ Hide Q3: Error Taxonomy
Define standard error codes:
Code HTTP Status Description VALIDATION_ERROR 400 Invalid input data UNAUTHORIZED 401 Authentication required FORBIDDEN 403 Insufficient permissions NOT_FOUND 404 Resource not found CONFLICT 409 Resource state conflict INTERNAL_ERROR 500 Unexpected server error Phase 4: Generate Configuration .NET Output Files File Purpose Middleware/GlobalExceptionMiddleware.cs Exception handling middleware Exceptions/AppException.cs Base exception class Exceptions/ValidationException.cs Validation errors Exceptions/NotFoundException.cs Not found errors Models/ErrorResponse.cs Error response model
Generation Process:
Use MCP ref to get current ASP.NET Core exception handling patterns Generate GlobalExceptionMiddleware with: Exception type to HTTP status mapping Logging of exceptions ProblemDetails response format Environment-aware detail level Generate custom exception classes
Registration Code:
app.UseMiddleware
Python Output Files File Purpose exceptions/app_exceptions.py Custom exception classes exceptions/handlers.py FastAPI exception handlers models/error_response.py Pydantic error models
Generation Process:
Use MCP ref to get current FastAPI exception handling patterns Generate exception handlers with: HTTPException handling Custom AppException handling Validation error handling Request validation error handling Generate custom exception classes
Registration Code:
app.add_exception_handler(AppException, app_exception_handler) app.add_exception_handler(RequestValidationError, validation_exception_handler)
Phase 5: Validate
Validation Steps:
Syntax check:
.NET: dotnet build --no-restore Python: python -m py_compile exceptions/handlers.py
Test error handling:
Create test endpoint that throws exception Verify error response format Check that stack trace hidden in Production
Expected Error Response (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" }
Return to Coordinator
{
"status": "success",
"files_created": [
"Middleware/GlobalExceptionMiddleware.cs",
"Exceptions/AppException.cs",
"Models/ErrorResponse.cs"
],
"packages_added": [],
"registration_code": "app.UseMiddleware
Reference Links ASP.NET Core Error Handling FastAPI Handling Errors RFC 7807 Problem Details
Version: 2.0.0 Last Updated: 2026-01-10