文档中心文档中心
开发指南
开发工具
前端
开发指南
开发工具
前端
  • 开发指南
  • 全局状态码
  • 响应结果封装
  • 全局异常处理
  • 参数校验
  • SpringMVC使用LocalDateTime、LocalDate

全局异常处理

通过GlobalExceptionHandler实现统一异常处理,controller或者service不需要进行catch之后的包装.

全局返回结果

/**
 * 全局返回vo
 * 不需要success(boolean)属性,直接使用code判断
 * 不需要针对每种异常都申请一个错误码,特殊情况下(如前端需要针对不同错误码做不同页面跳转)需单独申请错误码。
 */
@Data
public class ResultVO<T> {

    /** 返回码 */
    @JsonProperty(index = 1)
    private int code;

    /** 消息 */
    @JsonProperty(index = 2)
    private String message;

    /** 具体数据 */
    @JsonProperty(index = 3)
    T data;

    /** 时间戳 */
    @JsonProperty(index = 4)
    private long timestamp = System.currentTimeMillis();
}

全局异常处理

/**
 * 全局异常处理器 
 */
@RestControllerAdvice
public class GlobalExceptionHandler
{
    /**
     * CoreException 异常处理
     *
     * @param request 请求
     * @param e 异常
     * @return 返回统一类型
     */
    @ExceptionHandler({CoreException.class})
    @ResponseStatus(value = org.springframework.http.HttpStatus.INTERNAL_SERVER_ERROR)
    public ResultVO<String> coreException(HttpServletRequest request, CoreException e) {

        log.error(e.getMessage(), e);

        // 兼容历史项目,先判断CoreException是否有code
        // 也可以通过定义不同的exception处理,但是需要handler中同步增加异常类型处理代码
        ResultVO<String> resultVO = new ResultVO<>();
        resultVO.setCode(Objects.isNull(e.getCode()) ? ResponseCodeEnum.FAIL.getCode() : e.getCode());
        resultVO.setMessage(e.getMessage());

        return resultVO;
    }
}
上次更新:
Prev
响应结果封装
Next
参数校验