@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
@ExceptionHandler(BindException.class)
@ResponseBody
public BaseResult handleBindException(Exception ex) {
String errorMessage = "";
BindException bindException = (BindException) ex;
BindingResult bindingResult = bindException.getBindingResult();
if(bindingResult.hasErrors()) {
errorMessage = bindingResult.getAllErrors().get(0).getDefaultMessage();
}
log.error(errorMessage, ex);
BaseResult baseResult = new BaseResult(BaseResult.FAIL);
baseResult.setMessage(errorMessage);
return baseResult;
}
@ExceptionHandler(DuplicateKeyException.class)
@ResponseBody
public BaseResult handleDuplicateKeyException(DuplicateKeyException ex) {
String errorMessage = ex.getCause().getMessage();
log.error(errorMessage, ex);
BaseResult baseResult = new BaseResult(BaseResult.FAIL);
baseResult.setMessage(errorMessage);
return baseResult;
}
@ExceptionHandler(Exception.class)
@ResponseBody
public BaseResult handleException(Exception ex) {
String errorMessage = ex.getMessage();
log.error(errorMessage, ex);
BaseResult baseResult = new BaseResult(BaseResult.FAIL);
baseResult.setMessage(errorMessage);
return baseResult;
}
/**
* 处理文件上传大小过大异常
* @param e
* @return
*/
@ExceptionHandler(MultipartException.class)
@ResponseBody
public BaseResult handleMultipartException(MultipartException e) {
String errorMessage = e.getMessage();
log.error(errorMessage,e);
BaseResult result = new BaseResult(BaseResult.FAIL);
result.setMessage("上传文件大小超过最大限制 最大文件大小限制为:10M");
return result;
}
}