Error Handling Standards
Priority: P1 (OPERATIONAL)
Error Architecture
- API Layer: Map domain errors to HTTP responses globally.
- Domain Layer: Throw pure business errors. NO HTTP status codes here.
- Infra Layer: Wrap 3rd-party exceptions. NOT leak raw DB errors to API.
- Standard Shape: APIs must return standardized JSON envelope:
See implementation examples for standard error response shape.
Error Mechanics
- Wrap: Add context (
fmt.Errorf("process: %w", err),new Error('msg', { cause })). - Replace: Only when original error leaks sensitive details.
- Error Codes: Use
SCREAMING_SNAKE_CASEIDs (ORDER_PAYMENT_FAILED).
Anti-Patterns
- Swallowing Errors: Never
catch(e) {}without logging or re-throwing. - Stack Traces: Never expose stack traces in API responses.
- Generic 500s: Use
400with specific details for validation instead of 500.