Agent-skills-standard nestjs-error-handling

Implement Global Exception Filters and standard error formats in NestJS. Use when implementing global exception filters or standardizing error responses in NestJS. (triggers: **/*.filter.ts, main.ts, ExceptionFilter, Catch, HttpException)

install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/nestjs/nestjs-error-handling" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-nestjs-error-handling && rm -rf "$T"
manifest: skills/nestjs/nestjs-error-handling/SKILL.md
source content

NestJS Error Handling Standards

Priority: P1 (OPERATIONAL)

  • Requirement: Centralize error formatting.
  • Platform Agnostic: not import
    Request
    /
    Response
    from Express/Fastify types directly.
  • Use:
    HttpAdapterHost
    to 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

  1. Service: Throws specific or generic errors (e.g.,
    EntityNotFoundError
    ).
  2. 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.
  1. Global Filter: Formats final JSON response.

Built-in Exceptions

  • Use: Throw
    NotFoundException
    ,
    ForbiddenException
    ,
    BadRequestException
    .
  • Custom: Extend
    HttpException
    only for domain-specific failures that need specific status codes.

Logging

  • Context: Always pass
    MyClass.name
    to
    Logger
    constructor.
  • 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
    ApiException
    payloads 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
    HttpAdapterHost
    for platform-agnostic error handling.
  • No HttpException in services: Throw domain errors in services; let Interceptors map to HTTP exceptions.