使用@ControllerAdvice横切所有controller,再使用@ExceptionHandler处理各种异常
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
private GlobalExceptionHandler() {
}
@ExceptionHandler({MethodArgumentNotValidException.class})
public ResponseEntity> methodArgumentNotValidException(MethodArgumentNotValidException e) {
List errors = e.getBindingResult().getFieldErrors();
StringBuilder builder = new StringBuilder();
for(int i=0; i result = Result.error("12345",builder.toString());
log.error("Params valid exception={}",e.getMessage(),e);
return new ResponseEntity<>(result,HttpStatus.BAD_REQUEST);
}
// 其他需要单独处理的exception自行补充
@ExceptionHandler(Exception.class)
public ResponseEntity> globalHandle(Exception e) {
String message = "系统异常";
if(!StringUtils.isEmpty(e.getMessage())) {
message = e.getMessage();
}
Result> result = Result.error("11111",message );
log.error("unknown exception={}",e.getMessage(),e);
return new ResponseEntity<>(result,HttpStatus.INTERNAL_SERVER_ERROR);
}
}



