NestJS Error Handling Standards
Priority: P1 (OPERATIONAL)
Global error handling and exception management patterns.
- •
Requirement: Centralize error formatting.
- •
Platform Agnostic: Do not import
Request/Responsefrom Express/Fastify types directly.- •Use:
HttpAdapterHostto access the underlying platform response methods. - •
const { httpAdapter } = this.httpAdapterHost;
- •Use:
- •
Structure:
- •Implement strictly typed error responses.
- •Refer to API Standards for
ApiErrorResponse.
json{ "statusCode": 400, "message": "Validation failed", "error": "Bad Request", "timestamp": "ISO...", "path": "/users" }
Error Flow
- •Service: Throws specific or generic errors (e.g.,
EntityNotFoundError). - •Interceptor: Maps low-level errors to HTTP Exceptions (e.g.,
catchError(err => throw new NotFoundException())).- •Why: Keeps Exception Filters focused on formatting, not business logic interpretation.
- •Global Filter: Formats the final JSON response.
Built-in Exceptions
- •Use: Throw
NotFoundException,ForbiddenException,BadRequestException. - •Custom: Extend
HttpExceptiononly for domain-specific failures that need specific status codes.
Logging
- •Context: Always pass
MyClass.nameto theLoggerconstructor. - •Levels:
- •
error: 500s (Stack trace required). - •
warn: 400s (Client errors).
- •
Security (Information Leakage)
- •Production: NEVER expose stack traces in HTTP responses (
process.env.NODE_ENV === 'production'). - •Sanitization: Ensure
ApiExceptionpayloads do not leak internal file paths or raw variable dumps.