What is the purpose of the @ExceptionHandler annotation in Spring Boot controllers?
It is used to define a method that handles specific exceptions thrown within the controller, allowing custom error responses without crashing the app.
Click to reveal answer
beginner
How do you specify which exception a method handles using @ExceptionHandler?
You pass the exception class as a parameter to <code>@ExceptionHandler</code>, for example: <code>@ExceptionHandler(NullPointerException.class)</code>.
Click to reveal answer
intermediate
Can @ExceptionHandler methods return custom HTTP status codes?
Yes, by returning a ResponseEntity or using @ResponseStatus on the method, you can set custom HTTP status codes for error responses.
Click to reveal answer
intermediate
Where can @ExceptionHandler methods be declared in a Spring Boot app?
They can be declared inside a controller class or in a separate class annotated with <code>@ControllerAdvice</code> to handle exceptions globally.
Click to reveal answer
beginner
What happens if no @ExceptionHandler matches an exception thrown in a controller?
Spring Boot uses its default error handling, which usually returns a generic error page or JSON with status 500 Internal Server Error.
Click to reveal answer
What does @ExceptionHandler do in a Spring Boot controller?
AConfigures database connections
BDefines a new REST endpoint
CInjects dependencies into the controller
DHandles specific exceptions thrown in the controller
✗ Incorrect
@ExceptionHandler is used to catch and handle exceptions in controller methods.
How do you specify which exception a method handles with @ExceptionHandler?
ABy passing the exception class to the annotation
BBy naming the method after the exception
CBy returning a ResponseEntity
DBy using <code>@ResponseBody</code>
✗ Incorrect
You specify the exception class inside @ExceptionHandler(ExceptionClass.class).
Where can @ExceptionHandler methods be placed?
AOnly inside controller classes
BInside controllers or classes annotated with <code>@ControllerAdvice</code>
COnly inside service classes
DOnly in configuration classes
✗ Incorrect
@ExceptionHandler methods can be in controllers or global handler classes with @ControllerAdvice.
What is the default HTTP status code if an exception is not handled by @ExceptionHandler?
A500 Internal Server Error
B404 Not Found
C200 OK
D302 Redirect
✗ Incorrect
Unhandled exceptions usually result in a 500 Internal Server Error response.
How can you customize the HTTP status code returned by an @ExceptionHandler method?
ABy naming the method with the status code
BBy using <code>@GetMapping</code>
CBy returning a <code>ResponseEntity</code> with status
DBy throwing another exception
✗ Incorrect
Returning a ResponseEntity lets you set the HTTP status code explicitly.
Explain how @ExceptionHandler works in Spring Boot controllers and how it helps improve user experience.
Think about how apps show friendly error messages instead of crashing.
You got /5 concepts.
Describe where and how you would use @ExceptionHandler to handle a NullPointerException in a Spring Boot app.
Imagine you want to catch a specific error and show a nice message.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of using @ExceptionHandler in a Spring Boot controller?
easy
A. To catch and handle exceptions thrown in controller methods
B. To define the URL path for a controller method
C. To inject dependencies into the controller
D. To configure database connections
Solution
Step 1: Understand the role of @ExceptionHandler
@ExceptionHandler is used to catch exceptions that occur in controller methods to prevent the app from crashing.
Step 2: Identify what @ExceptionHandler does in controllers
It allows sending user-friendly error messages and proper HTTP status codes when exceptions happen.
Final Answer:
To catch and handle exceptions thrown in controller methods -> Option A
Quick Check:
@ExceptionHandler catches exceptions [OK]
Hint: Remember: @ExceptionHandler handles errors in controllers [OK]
Common Mistakes:
Confusing @ExceptionHandler with URL mapping annotations
Thinking it injects dependencies
Assuming it configures database settings
2. Which of the following is the correct way to declare an exception handler method in a Spring Boot controller?
easy
A. @RequestMapping(Exception.class) public String handleError() { return "error"; }
B. @GetMapping(Exception.class) public String handleError() { return "error"; }
C. @Autowired(Exception.class) public String handleError() { return "error"; }
D. @ExceptionHandler(Exception.class) public String handleError() { return "error"; }
Solution
Step 1: Identify the correct annotation for exception handling
@ExceptionHandler is the annotation used to mark methods that handle exceptions.
Step 2: Check the method signature
The method should be annotated with @ExceptionHandler(Exception.class) and return a response, here a String view name.
Final Answer:
@ExceptionHandler(Exception.class) public String handleError() { return "error"; } -> Option D
Quick Check:
@ExceptionHandler syntax [OK]
Hint: Use @ExceptionHandler with exception class to handle errors [OK]
Common Mistakes:
Using @RequestMapping or @GetMapping instead of @ExceptionHandler
Misusing @Autowired annotation
Missing the exception class in @ExceptionHandler
3. Given the following controller code snippet, what will be the HTTP status code returned when a NullPointerException occurs?
@RestController
public class MyController {
@GetMapping("/test")
public String test() {
throw new NullPointerException("Null error");
}
@ExceptionHandler(NullPointerException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleNullPointer() {
return "Null pointer error handled";
}
}
medium
A. 200 OK
B. 400 Bad Request
C. 500 Internal Server Error
D. 404 Not Found
Solution
Step 1: Identify the exception and handler
The controller throws NullPointerException, which is caught by the method annotated with @ExceptionHandler(NullPointerException.class).
Step 2: Check the response status annotation
The handler method has @ResponseStatus(HttpStatus.BAD_REQUEST), so it sets the HTTP status to 400.
Final Answer:
400 Bad Request -> Option B
Quick Check:
@ResponseStatus sets HTTP code = 400 [OK]
Hint: Look for @ResponseStatus on @ExceptionHandler method [OK]
Common Mistakes:
Assuming default 500 error without @ResponseStatus
Confusing exception type with HTTP status
Ignoring the @ExceptionHandler method
4. Consider this controller code snippet:
@RestController
public class DemoController {
@GetMapping("/demo")
public String demo() {
throw new IllegalArgumentException("Invalid argument");
}
@ExceptionHandler(NullPointerException.class)
public String handleNull() {
return "Null error";
}
}
What will happen when the /demo endpoint is called?
medium
A. The exception will be handled by handleNull method
B. The response will be "Null error" with HTTP 200
C. The exception will not be handled and a 500 error is returned
D. The server will return HTTP 404 Not Found
Solution
Step 1: Identify the thrown exception
The method throws IllegalArgumentException, but the handler only catches NullPointerException.
Step 2: Check if exception is handled
Since no handler matches IllegalArgumentException, Spring Boot returns a default 500 Internal Server Error.
Final Answer:
The exception will not be handled and a 500 error is returned -> Option C
Quick Check:
Handler mismatch causes 500 error [OK]
Hint: Handler must match exception type exactly [OK]
Common Mistakes:
Assuming handler catches all exceptions
Thinking handler method runs for different exception types
Expecting 404 instead of 500 error
5. You want to create a global exception handler in Spring Boot that catches RuntimeException for all controllers and returns a JSON error message with HTTP status 500. Which approach correctly achieves this?
hard
A. Create a class annotated with @ControllerAdvice and define a method with @ExceptionHandler(RuntimeException.class) returning a JSON response and @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR).
B. Add @ExceptionHandler(RuntimeException.class) method inside each controller class returning a view name.
C. Use @RestController on a class with @ExceptionHandler(Exception.class) returning a String message.
D. Configure exception handling in application.properties file.
Solution
Step 1: Understand global exception handling
@ControllerAdvice allows defining exception handlers that apply to all controllers globally.
Step 2: Define handler method for RuntimeException
Use @ExceptionHandler(RuntimeException.class) with @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) to set status 500 and return JSON response.
Final Answer:
Create a class annotated with @ControllerAdvice and define a method with @ExceptionHandler(RuntimeException.class) returning a JSON response and @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR). -> Option A
Quick Check:
Global handler uses @ControllerAdvice + @ExceptionHandler [OK]
Hint: Use @ControllerAdvice for global exception handling [OK]
Common Mistakes:
Putting handlers only inside controllers for global effect
Using application.properties for exception handling
Not setting proper HTTP status in handler
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.