What is the purpose of built-in HTTP exceptions in NestJS?
Built-in HTTP exceptions in NestJS help you send standard HTTP error responses easily, like 404 Not Found or 400 Bad Request, without writing extra code.
Click to reveal answer
beginner
How do you throw a 404 Not Found error using NestJS built-in exceptions?
You throw a 404 error by using `throw new NotFoundException()` inside your controller or service.
Click to reveal answer
beginner
Name three common built-in HTTP exceptions provided by NestJS.
Three common exceptions are: `BadRequestException` (400), `UnauthorizedException` (401), and `ForbiddenException` (403).
Click to reveal answer
intermediate
What happens when you throw a built-in HTTP exception in a NestJS route handler?
NestJS catches the exception and sends an HTTP response with the correct status code and a JSON message describing the error.
Click to reveal answer
intermediate
Can you customize the error message when throwing a built-in HTTP exception in NestJS?
Yes, you can pass a custom message string or an object as an argument to the exception constructor to customize the error response.
Click to reveal answer
Which NestJS exception should you use to indicate a resource was not found?
ANotFoundException
BBadRequestException
CUnauthorizedException
DForbiddenException
✗ Incorrect
NotFoundException sends a 404 HTTP status code, which means the resource was not found.
What HTTP status code does BadRequestException correspond to?
A400
B401
C403
D404
✗ Incorrect
BadRequestException corresponds to HTTP status code 400, indicating a bad client request.
How do you send a custom error message with a built-in HTTP exception?
ASet a global variable
BPass the message to the exception constructor
CModify the response object manually
DUse a middleware
✗ Incorrect
You pass a custom message string or object to the exception constructor to customize the error message.
Which exception is best for signaling that a user is not allowed to access a resource?
AUnauthorizedException
BBadRequestException
CForbiddenException
DNotFoundException
✗ Incorrect
ForbiddenException (403) means the user is authenticated but not allowed to access the resource.
What does NestJS do when a built-in HTTP exception is thrown?
ARestarts the server
BLogs the error and continues without response
CIgnores the exception
DSends an HTTP response with the correct status and error message
✗ Incorrect
NestJS automatically sends an HTTP response with the proper status code and error message when an exception is thrown.
Explain how to use built-in HTTP exceptions in NestJS to handle errors in your application.
Think about how you tell NestJS to send error responses easily.
You got /3 concepts.
List and describe at least three built-in HTTP exceptions in NestJS and when to use each.
Focus on common HTTP status codes and their meanings.
You got /4 concepts.
Practice
(1/5)
1. What is the purpose of using built-in HTTP exceptions like NotFoundException in a NestJS controller?
easy
A. To automatically log all requests to the server
B. To create new API routes dynamically
C. To improve database query performance
D. To send a clear HTTP error response with the correct status code and message
Solution
Step 1: Understand the role of HTTP exceptions in NestJS
Built-in HTTP exceptions are used to send error responses with specific HTTP status codes and messages.
Step 2: Identify the purpose of NotFoundException
This exception sends a 404 status code with a message indicating the resource was not found.
Final Answer:
To send a clear HTTP error response with the correct status code and message -> Option D
Quick Check:
HTTP exceptions = clear error responses [OK]
Hint: Exceptions send proper HTTP status codes and messages [OK]
Common Mistakes:
Thinking exceptions log requests automatically
Confusing exceptions with database operations
Assuming exceptions create routes
2. Which of the following is the correct way to throw a BadRequestException in a NestJS controller method?
easy
A. throw new BadRequestException('Invalid input');
B. return BadRequestException('Invalid input');
C. throw BadRequestException('Invalid input');
D. BadRequestException.throw('Invalid input');
Solution
Step 1: Recall the syntax for throwing exceptions in NestJS
Exceptions are thrown using the JavaScript throw new ExceptionClass() syntax.
Step 2: Check the correct usage for BadRequestException
The correct syntax is throw new BadRequestException('message').
Final Answer:
throw new BadRequestException('Invalid input'); -> Option A
Quick Check:
Throw exceptions with throw new [OK]
Hint: Use 'throw new ExceptionName()' to raise exceptions [OK]
Common Mistakes:
Omitting 'new' keyword when throwing exceptions
Using return instead of throw
Calling exception as a function without 'new'
3. Given this NestJS controller method, what HTTP status code will the client receive?
async getUser(id: string) {
if (!id) {
throw new BadRequestException('ID is required');
}
const user = await this.userService.findById(id);
if (!user) {
throw new NotFoundException('User not found');
}
return user;
}
medium
A. 200 if user found, 400 if ID missing, 404 if user not found
B. 200 always
C. 500 if user not found
D. 400 if user not found
Solution
Step 1: Analyze the conditions for exceptions
If id is missing, it throws BadRequestException (HTTP 400). If user is not found, it throws NotFoundException (HTTP 404).
Step 2: Understand the normal return
If no exceptions are thrown, the method returns the user with HTTP 200 status.
Final Answer:
200 if user found, 400 if ID missing, 404 if user not found -> Option A
Quick Check:
Exceptions map to HTTP codes 400 and 404, else 200 [OK]
Hint: Check exception types to know HTTP status codes sent [OK]
Common Mistakes:
Assuming 500 error instead of 404 for not found
Ignoring the BadRequestException case
Thinking exceptions return 200 status
4. Identify the error in this NestJS controller snippet that tries to throw a ForbiddenException:
if (!user.isAdmin) {
ForbiddenException('Access denied');
}
medium
A. Exception class name is incorrect
B. Missing 'throw' keyword before the exception
C. Exception message should be an object, not a string
D. ForbiddenException cannot be used in controllers
Solution
Step 1: Check how exceptions are thrown in NestJS
Exceptions must be thrown using the throw keyword followed by new ExceptionClass().
Step 2: Identify the missing part in the code
The code calls ForbiddenException('Access denied') without throw and new, so it does nothing.
Final Answer:
Missing 'throw' keyword before the exception -> Option B
Quick Check:
Always use 'throw new Exception()' to raise errors [OK]
Hint: Always use 'throw new' to raise exceptions [OK]
Common Mistakes:
Calling exception as a function without throw
Forgetting the 'new' keyword
Using wrong exception class names
5. You want to create a custom error response with status 403 and a detailed message using NestJS built-in exceptions. Which approach correctly extends ForbiddenException to add a custom error code in the response body?
hard
A. class CustomForbiddenException extends ForbiddenException {
constructor() {
super('Access denied');
this.errorCode = 123;
}
}
B. throw new ForbiddenException('Access denied', 123);
C. class CustomForbiddenException extends ForbiddenException {
constructor() {
super({ message: 'Access denied', errorCode: 123 });
}
}
D. throw new ForbiddenException({ message: 'Access denied' }, 123);
Solution
Step 1: Understand how to customize exception response body
Passing an object to super() in the exception constructor customizes the JSON response.
Step 2: Check which option correctly extends ForbiddenException
class CustomForbiddenException extends ForbiddenException {
constructor() {
super({ message: 'Access denied', errorCode: 123 });
}
} passes an object with message and errorCode to super(), correctly customizing the response.
Step 3: Identify why other options are incorrect
throw new ForbiddenException('Access denied', 123); incorrectly passes a second argument as number; class CustomForbiddenException extends ForbiddenException {
constructor() {
super('Access denied');
this.errorCode = 123;
}
} sets a property but does not affect response body; throw new ForbiddenException({ message: 'Access denied' }, 123); passes wrong parameters.
Final Answer:
class CustomForbiddenException extends ForbiddenException {
constructor() {
super({ message: 'Access denied', errorCode: 123 });
}
} -> Option C
Quick Check:
Pass object to super() to customize exception response [OK]
Hint: Pass an object with details to super() in custom exception [OK]
Common Mistakes:
Passing multiple arguments instead of one object
Setting properties without calling super() properly
Misunderstanding how to customize exception response
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.