Exception handling in StreamingResponseBody not working

Viewed 1041

I'm trying to catch an exception thrown in my implementation of StreamingResponseBody, I can see the exception being thrown inside the class however the thrown exception my handling seems to work, But I am not able to get my custom message and my response code is 200.

@GetMapping(path = "/test", produces = "application/json")
public StreamingResponseBody test(@RequestParam(value = "var1") final String test) throws IOException{
    return new StreamingResponseBody() {
        @Override
        public void writeTo(final OutputStream outputStream) throws IOException{
            try {
                // Some operations..
            } catch (Exception MyExceptione e) {
                throw new MyException(e);
            }
        }
    };
}

@ExceptionHandler(MyException.class)
public ResponseEntity handleMyException(MyException exception) {
    return ResponseEntity.status(exception.getHttpStatus()).body(
            ErrorDTO.builder()
                    .message(exception.getMessage())
                    .description(exception.getHttpStatus().getReasonPhrase())
                    .build());
}

I would expect my ControllerAdvice to return an ResponseEntity with a Http Status of 500.

0 Answers
Related