Summary I have a Spring Boot service where custom JSON error responses are returned when controller methods are annotated with a custom annotation.

When accessing an endpoint that does not exist, the default Spring 404 JSON body is returned, but the following unexpected error detail appears in the response:

java.lang.IllegalStateException: Could not resolve parameter [1] in handleException(java.lang.Exception,org.springframework.web.method.HandlerMethod) throws java.lang.Exception: No suitable resolver
    at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:224)

How to Reproduce: You can reproduce this by running the test here: https://github.com/cbsingh1/exception-handler-method/blob/main/src/test/java/com/example/exception_handler/ExceptionHandlerApplicationTests.java

Expected Behavior If the HandlerMethod cannot be resolved (e.g., because no handler exists for the request), I would expect:

  • handlerMethod to be null, allowing me to handle it explicitly in my exception handler.
  • or cleaner logging/formatting of the error
@ExceptionHandler(Exception.class)
ResponseEntity<String> handleAllExceptions(Exception exception, HandlerMethod handlerMethod) throws Exception {
    if (handlerMethod == null) {
        // special handling
    }
    if (handlerMethod.hasMethodAnnotation(MyCustomAnnotation.class)) {
        return ResponseEntity.internalServerError().body("custom failure message");
    }
    throw exception;
}

Suggestion It would be great if Spring could:

  • Provide a null (or safe default) for HandlerMethod when no handler is resolved.
  • Improve error formatting