项目中客户端请求如果后端出现技术上的bug,会报出网络异常,这对客户是很不友好的,比方说请求参数格式校验,如下:
import com.fasterxml.jackson.annotation.JsonFormat;
假如日期格式传的不对,这个注解校验的时候没有友好提示,反而是报出网络异常,且是HttpMessageNotReadableException异常下的格式异常。这对客户很不友好,但是这个注解没有像@NotNull里面有message给用户提示,所以需要一个全局异常处理类,在报出这个异常的时候处理这个异常且返回一个友好信息给用户,如下:
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.core.annotation.Order;
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* 数据格式异常处理
*/
@ExceptionHandler(HttpMessageNotReadableException.class)
public ResponseData formatException(HttpMessageNotReadableException e) {
log.error(e.getMessage());
return ResponseData.newBuilder().msg("日期或数据格式错误").code(200).build();
}
}