Nestjs error handling
Skill FilippoDeSilva/skills/skills/nestjs/nestjs-error-handling
Skills for my agentic development workflow.
npx -y skills add FilippoDeSilva/skills --skill nestjs-error-handlingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Implement Global Exception Filters and standard error formats in NestJS. Use when implementing global exception filters or standardizing error responses in NestJS.
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
2.4 KB, as published. Nobody here has run it
NestJS Error Handling Standards
Priority: P1 (OPERATIONAL)
- Requirement: Centralize error formatting.
- Platform Agnostic: not import
Request/Responsefrom Express/Fastify types directly. - Use:
HttpAdapterHostto access underlying platform response methods. const { httpAdapter } = this.httpAdapterHost;- 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 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.nametoLoggerconstructor. - 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 not leak internal file paths or raw variable dumps.
Anti-Patterns
- No stack traces in production: Gate stack exposure behind
NODE_ENV === 'production'check. - No Express types in filters: Use
HttpAdapterHostfor platform-agnostic error handling. - No HttpException in services: Throw domain errors in services; let Interceptors map to HTTP exceptions.