Bird
Raised Fist0
NestJSframework~5 mins

Global exception filters in NestJS - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a global exception filter in NestJS?
A global exception filter in NestJS is a special class that catches and handles all exceptions thrown in the application, allowing centralized error handling.
Click to reveal answer
beginner
How do you apply a global exception filter in a NestJS application?
You apply a global exception filter by using the app.useGlobalFilters(new YourExceptionFilter()) method inside the main bootstrap function.
Click to reveal answer
intermediate
What method must be implemented in a NestJS exception filter class?
The exception filter class must implement the <code>catch(exception: any, host: ArgumentsHost)</code> method to handle exceptions.
Click to reveal answer
intermediate
Why use a global exception filter instead of local filters?
Global exception filters handle errors across the whole app, reducing repeated code and ensuring consistent error responses everywhere.
Click to reveal answer
advanced
What is the role of ArgumentsHost in a global exception filter?
ArgumentsHost provides access to the current request and response objects, letting the filter send custom responses based on the context (HTTP, WebSocket, etc.).
Click to reveal answer
Which method is used to register a global exception filter in NestJS?
Aapp.setExceptionFilter()
Bapp.registerExceptionFilter()
Capp.addGlobalFilter()
Dapp.useGlobalFilters()
What does the catch method in an exception filter receive as arguments?
Arequest and response
Bexception and ArgumentsHost
Cerror and next function
Dexception and next function
Global exception filters in NestJS are best for:
AHandling errors app-wide in one place
BHandling errors only in one controller
CLogging only without modifying responses
DReplacing middleware
Which interface should a global exception filter class implement?
AExceptionFilter
BHttpException
CMiddlewareConsumer
DPipeTransform
What can you access through ArgumentsHost in a global exception filter?
AApplication configuration
BOnly the exception message
CRequest and response objects
DDatabase connection
Explain how to create and apply a global exception filter in NestJS.
Think about the class, method, and where to register it.
You got /3 concepts.
    Describe the benefits of using a global exception filter compared to local filters in NestJS.
    Consider maintenance and consistency advantages.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a global exception filter in a NestJS application?
      easy
      A. To catch and handle exceptions across the entire application in one place
      B. To define routes for the application
      C. To manage database connections
      D. To serve static files

      Solution

      1. Step 1: Understand the role of exception filters

        Exception filters in NestJS are designed to catch errors and exceptions that occur during request processing.
      2. Step 2: Identify the scope of global exception filters

        Global exception filters apply this error handling across the entire app, centralizing error management.
      3. Final Answer:

        To catch and handle exceptions across the entire application in one place -> Option A
      4. Quick Check:

        Global exception filters = app-wide error handling [OK]
      Hint: Global filters catch errors everywhere in the app [OK]
      Common Mistakes:
      • Confusing filters with routing or database management
      • Thinking filters serve static files
      • Assuming filters only handle specific routes
      2. Which of the following is the correct way to apply a global exception filter in the main.ts file of a NestJS app?
      easy
      A. app.useGlobalFilters(new MyExceptionFilter())
      B. app.setGlobalFilters(new MyExceptionFilter())
      C. app.applyGlobalFilters(MyExceptionFilter)
      D. app.registerGlobalFilter(MyExceptionFilter)

      Solution

      1. Step 1: Recall the NestJS method for global filters

        The official method to apply global exception filters is useGlobalFilters() on the app instance.
      2. Step 2: Check the syntax for passing the filter

        The filter must be instantiated with new before passing it to useGlobalFilters().
      3. Final Answer:

        app.useGlobalFilters(new MyExceptionFilter()) -> Option A
      4. Quick Check:

        Global filter method = useGlobalFilters() [OK]
      Hint: Use app.useGlobalFilters(new Filter()) in main.ts [OK]
      Common Mistakes:
      • Using incorrect method names like setGlobalFilters
      • Passing class without instantiation
      • Confusing with middleware registration methods
      3. Given this global exception filter code snippet, what will be the HTTP status code returned when an exception is thrown?
      import { ExceptionFilter, Catch, ArgumentsHost, HttpException } from '@nestjs/common';
      
      @Catch()
      export class AllExceptionsFilter implements ExceptionFilter {
        catch(exception: unknown, host: ArgumentsHost) {
          const ctx = host.switchToHttp();
          const response = ctx.getResponse();
      
          if (exception instanceof HttpException) {
            const status = exception.getStatus();
            response.status(status).json({ message: exception.message });
          } else {
            response.status(500).json({ message: 'Internal server error' });
          }
        }
      }
      medium
      A. 200
      B. 500
      C. Depends on the exception type
      D. 404

      Solution

      1. Step 1: Analyze the filter's catch method

        The filter checks if the exception is an instance of HttpException and uses its status code.
      2. Step 2: Determine status code for other exceptions

        If not an HttpException, it returns status 500 with a generic error message.
      3. Final Answer:

        Depends on the exception type -> Option C
      4. Quick Check:

        HttpException status or 500 for others [OK]
      Hint: Check if exception is HttpException for status code [OK]
      Common Mistakes:
      • Assuming always 500 status
      • Ignoring HttpException status extraction
      • Confusing 404 with 500 errors
      4. Identify the error in this global exception filter implementation:
      import { ExceptionFilter, Catch, ArgumentsHost } from '@nestjs/common';
      
      @Catch()
      export class MyFilter implements ExceptionFilter {
        catch(exception: any, host: ArgumentsHost) {
          const response = host.getResponse();
          response.status(400).json({ error: 'Bad Request' });
        }
      }
      medium
      A. Missing @Injectable() decorator on the filter class
      B. The @Catch() decorator must specify exception types
      C. The catch method must return a value
      D. host.getResponse() is incorrect; should use host.switchToHttp().getResponse()

      Solution

      1. Step 1: Check how to get response object

        In NestJS, to get the HTTP response, use host.switchToHttp().getResponse(), not host.getResponse().
      2. Step 2: Verify other parts

        The @Catch() decorator can be empty to catch all exceptions, and the catch method does not need to return a value. @Injectable() is not required for filters.
      3. Final Answer:

        host.getResponse() is incorrect; should use host.switchToHttp().getResponse() -> Option D
      4. Quick Check:

        Use switchToHttp() to access response [OK]
      Hint: Use host.switchToHttp().getResponse() to get response [OK]
      Common Mistakes:
      • Calling host.getResponse() directly
      • Thinking @Injectable() is mandatory for filters
      • Expecting catch to return a value
      5. You want to create a global exception filter that logs all exceptions and returns a JSON response with a custom message and status code 418 (I'm a teapot) for all errors except HttpExceptions, which should keep their original status. How should you implement the catch method?
      hard
      A. Always respond with status 418 and ignore HttpException status
      B. Check if exception is HttpException, use its status; else log and respond with 418 and custom message
      C. Only log exceptions but do not modify the response
      D. Throw the exception again to let NestJS handle it

      Solution

      1. Step 1: Handle HttpException separately

        Check if the exception is an instance of HttpException to preserve its status and message.
      2. Step 2: For other exceptions, log and respond with status 418

        Log the error details, then send a JSON response with status 418 and a custom message.
      3. Final Answer:

        Check if exception is HttpException, use its status; else log and respond with 418 and custom message -> Option B
      4. Quick Check:

        Preserve HttpException status, else respond 418 with log [OK]
      Hint: Preserve HttpException status; else respond 418 with log [OK]
      Common Mistakes:
      • Ignoring HttpException status and always sending 418
      • Not logging exceptions
      • Re-throwing exceptions instead of handling
      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