nestjs-error-handling
Global Exception Filters and standard error formats.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
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.
{ "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.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!