我有以下幾點@ControllerAdvice:@ControllerAdvicepublic class ExceptionHandlingController { @ExceptionHandler(value = { MethodArgumentNotValidException.class, EntityExistsException.class, BadCredentialsException.class, MismatchedInputException.class }) public ResponseEntity<ExceptionResponse> invalidInput(RuntimeException ex) { ExceptionResponse response = new ExceptionResponse(); response.setErrorCode("BAD_REQUEST"); response.setErrorMessage(ex.getMessage()); return new ResponseEntity<ExceptionResponse>(response, HttpStatus.BAD_REQUEST); }}驗證器以這種方式綁定到控制器:@RestController@RequestMapping("/api/authentication")public class UserAccountControllerImpl implements UserAccountController { @Autowired private UserAccountService userAccountService; @Override public UserAccountEntity login(@Valid @RequestBody UserAccountEntity account, HttpServletResponse response) throws BadCredentialsException { return userAccountService.authenticateUserAndSetResponsenHeader( account.getUsername(), account.getPassword(), response); } @Override public UserAccountEntity create(@Valid @RequestBody UserAccountEntity userAccount, HttpServletResponse response) throws EntityExistsException { String username = userAccount.getUsername(); String password = userAccount.getPassword(); userAccountService.saveIfNotExists(username, password); return userAccountService.authenticateUserAndSetResponsenHeader( username, password, response); } //used to bind the validator to the incoming request @InitBinder public void binder(WebDataBinder binder) { binder.addValidators(new UserAccountValidator()); }}為什么抓不到MethodArgumentNotValidException?
1 回答

至尊寶的傳說
TA貢獻1789條經(jīng)驗 獲得超10個贊
至少,異常 MethodArgumentNotValidException 不是 RuntimeException,但您在該異常處理程序中使用 RuntimeException 參數(shù)。對于測試,將方法參數(shù)中的 RuntimeException 更改為 Exception。
添加回答
舉報
0/150
提交
取消