概述
实际上我们编写 controller 层的时候一定要考虑到参数所有可能出现异常的可能,并对其进行处理,这样才是良好的代码。
public static void require(String fieldName,String... str) {
for (String s : str) {
if (StringUtils.isEmpty(s)) {
throw new ValidatorException(fieldName + "含有空值!");
}
}
}
public static void length(String fieldName, int min, int max ,String str) {
int len = 0;
if (!StringUtils.isEmpty(str)) len = str.length();
if (len < min || len > max) {
throw new ValidatorException(fieldName + "不符合长度!");
}
}
在本次业务中需要校验参数是否为空和长度是否符合规定,但每次接收的时候都需要去编写异常处理的代码显得很是冗余。
所以这里就是用到了 ControllerAdvice 注解来进行统一处理异常。
代码
我们建立一个类之后,将 @ControllerAdvice 注解加上便可以声明此类为一个异常处理类。
@ControllerAdvice
public class ControllerExceptionHandler {
然后我们就需要编写对应异常的处理方法,我们使用 @ExceptionHandler(value = ValidatorException.class)
来进行绑定对应的异常,这个异常类就是前面编写的校验方法所抛出的。
然后返回如何处理即可。
@ResponseBody
public ResponseDto validatorExceptionHandler(ValidatorException e){
ResponseDto responseDto = new ResponseDto();
responseDto.setSuccess(false);
responseDto.setMessage(e.getMessage());
return responseDto;
}
本页的评论功能已关闭