Bird
Raised Fist0
NestJSframework~5 mins

Exception filters in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of an Exception Filter in NestJS?
An Exception Filter in NestJS catches errors thrown during request handling and allows you to control the response sent back to the client, improving error management.
Click to reveal answer
beginner
How do you create a custom Exception Filter in NestJS?
You create a class that implements the <code>ExceptionFilter</code> interface and define a <code>catch()</code> method to handle exceptions and send custom responses.
Click to reveal answer
beginner
Which decorator is used to bind an Exception Filter to a controller or route in NestJS?
The @UseFilters() decorator is used to apply an Exception Filter to a controller or specific route handler.
Click to reveal answer
intermediate
What is the role of the ArgumentsHost parameter in the catch() method of an Exception Filter?
ArgumentsHost provides access to the underlying platform's request and response objects, allowing you to customize the error response based on the context (HTTP, WebSocket, etc.).
Click to reveal answer
intermediate
Can Exception Filters in NestJS handle both synchronous and asynchronous exceptions?
Yes, Exception Filters can catch exceptions thrown synchronously or asynchronously during request processing, making error handling consistent.
Click to reveal answer
Which interface must a custom Exception Filter implement in NestJS?
AFilterInterface
BErrorHandler
CCatchable
DExceptionFilter
What decorator applies an Exception Filter to a specific route or controller?
A@UseFilters()
B@HandleError()
C@Exception()
D@Catch()
What does the catch() method receive as arguments?
ARequest and Response objects
BException object and ArgumentsHost
COnly the Exception object
DOnly the ArgumentsHost
Which of these is NOT a typical use of Exception Filters?
AHandling database migrations
BLogging errors
CTransforming error responses
DSending custom HTTP status codes
Can Exception Filters handle exceptions from asynchronous code in NestJS?
AOnly exceptions from Promises
BNo, only synchronous exceptions
CYes, they handle both sync and async exceptions
DOnly exceptions from Observables
Explain how to create and apply a custom Exception Filter in NestJS.
Think about the class, method, and decorator involved.
You got /4 concepts.
    Describe the benefits of using Exception Filters in a NestJS application.
    Consider how filters improve error management and user experience.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of an exception filter in NestJS?
      easy
      A. To catch and handle errors in a centralized way
      B. To create database connections automatically
      C. To define routes for HTTP requests
      D. To manage user authentication

      Solution

      1. Step 1: Understand what exception filters do

        Exception filters catch errors thrown during request handling and allow custom responses.
      2. Step 2: Compare with other options

        Options B, C, and D relate to other NestJS features, not error handling.
      3. Final Answer:

        To catch and handle errors in a centralized way -> Option A
      4. Quick Check:

        Exception filters = centralized error handling [OK]
      Hint: Exception filters handle errors centrally, not routes or auth [OK]
      Common Mistakes:
      • Confusing exception filters with middleware
      • Thinking filters manage routes or database
      • Assuming filters handle authentication
      2. Which decorator is used to define an exception filter class in NestJS?
      easy
      A. @Exception()
      B. @Catch()
      C. @Filter()
      D. @ErrorHandler()

      Solution

      1. Step 1: Recall the decorator for exception filters

        The correct decorator to mark a class as an exception filter is @Catch().
      2. Step 2: Verify other decorators

        @Exception(), @Filter(), and @ErrorHandler() are not valid NestJS decorators for filters.
      3. Final Answer:

        @Catch() -> Option B
      4. Quick Check:

        @Catch() marks exception filters [OK]
      Hint: Remember: @Catch() catches exceptions in filters [OK]
      Common Mistakes:
      • Using @Exception() instead of @Catch()
      • Confusing with @Filter() which is not a decorator
      • Assuming @ErrorHandler() exists in NestJS
      3. Given this filter code, what will be the HTTP status code sent when a NotFoundException is thrown?
      import { ExceptionFilter, Catch, ArgumentsHost, NotFoundException } from '@nestjs/common';
      
      @Catch(NotFoundException)
      export class NotFoundFilter implements ExceptionFilter {
        catch(exception: NotFoundException, host: ArgumentsHost) {
          const ctx = host.switchToHttp();
          const response = ctx.getResponse();
          response.status(404).json({ message: 'Resource not found' });
        }
      }
      medium
      A. 404
      B. 200
      C. 500
      D. 400

      Solution

      1. Step 1: Analyze the response status set in the filter

        The filter explicitly sets the status code to 404 using response.status(404).
      2. Step 2: Understand the exception type caught

        The filter catches NotFoundException, which corresponds to HTTP 404 errors.
      3. Final Answer:

        404 -> Option A
      4. Quick Check:

        NotFoundException triggers 404 status [OK]
      Hint: Check response.status() call inside catch method [OK]
      Common Mistakes:
      • Assuming default 500 status without custom filter
      • Confusing 404 with 400 or 200
      • Ignoring the status set in the filter
      4. Identify the error in this exception filter code:
      import { ExceptionFilter, Catch, ArgumentsHost } from '@nestjs/common';
      
      @Catch(HttpException)
      export class AllExceptionsFilter implements ExceptionFilter {
        catch(exception, host: ArgumentsHost) {
          const ctx = host.switchToHttp();
          const response = ctx.getResponse();
          response.status(500).json({ message: exception.message });
        }
      }
      medium
      A. Missing exception type in @Catch() decorator
      B. catch method missing return type
      C. Using exception.message instead of exception.getMessage()
      D. Not importing HttpException class

      Solution

      1. Step 1: Check the @Catch() decorator usage

        The @Catch(HttpException) references HttpException, but it is not imported from '@nestjs/common'.
      2. Step 2: Validate other parts

        catch method can omit return type and exception type in loose TS, exception.message is valid.
      3. Final Answer:

        Not importing HttpException class -> Option D
      4. Quick Check:

        Import HttpException for @Catch(HttpException) [OK]
      Hint: Import exception classes used in @Catch() [OK]
      Common Mistakes:
      • Not importing referenced exception types like HttpException
      • Assuming catch method needs strict return type
      • Thinking exception needs getMessage() method
      5. You want to create a global exception filter that catches all exceptions and logs the error before sending a generic message. Which of these is the correct way to apply it globally in NestJS?
      hard
      A. Register the filter in a module's providers array only
      B. Add @Global() decorator to the filter class
      C. Use app.useGlobalFilters(new YourFilter()) in main.ts after creating the filter class
      D. Call app.setGlobalExceptionFilter(YourFilter) in main.ts

      Solution

      1. Step 1: Recall how to apply global filters in NestJS

        Global filters are applied using app.useGlobalFilters() method in the main bootstrap file.
      2. Step 2: Evaluate other options

        @Global() is for modules, not filters; registering in providers is local; app.setGlobalExceptionFilter() does not exist.
      3. Final Answer:

        Use app.useGlobalFilters(new YourFilter()) in main.ts after creating the filter class -> Option C
      4. Quick Check:

        Global filters use app.useGlobalFilters() [OK]
      Hint: Global filters need app.useGlobalFilters() call [OK]
      Common Mistakes:
      • Using @Global() decorator on filter class
      • Registering filter only in providers without global call
      • Assuming app.setGlobalExceptionFilter() exists
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard