Как отловить исключения из весеннего контроллера webflux? - PullRequest
0 голосов
/ 01 июля 2018

Я использую проверки javax в моем контроллере с @Valid @RequestBody. Когда сервер получает неверные данные, он выдает ошибку, но я хочу обработать эту ошибку и вернуть пользовательскую отформатированную ошибку. Я не могу поймать исключение в моем совете диспетчера. Я использую Spring WebFlux, поэтому не могу использовать bindingResult. Как я могу справиться с этим исключением? Вот мой код

Контроллер

    @PostMapping
    fun createPerson(@Valid @RequestBody resource: PersonResource): Mono<Person> {
        return personService.save(resource.toPerson())
    }

Ресурс

data class PersonResource(
    val id: String?,

    @field:NotEmpty
    val name: String,
    ...
}

ErrorHandler

@ControllerAdvice
class ApiErrorHandler {
  @ExceptionHandler(IllegalArgumentException::class)
    fun handleValidationErrors(e: IllegalArgumentException): ResponseEntity<*> {
    // never reaches here
  }
}
...