出现异常时返回JSON,如何确定对应的HTTP返回码?

发布于 2022-09-05 23:46:34 字数 649 浏览 25 评论 0

我用@ControllerAdvice,@ExceptionHandler(RuntimeException.class), @ExceptionHandler(Exception.class) 等注解使客户端收到更友好的JSON格式的提示。而不是常见的报错页面,

@ResponseStatus(value= HttpStatus.OK)
@ExceptionHandler(Exception.class)
@ResponseBody
public String handleException(Exception ex) {
    logger.error(ex.getMessage(), ex);
    return jsonRes(600, 6001, ex.getMessage());
}

JSON的格式就是 {status:600, code:6001, message:"xx错误"}

但是我不知道哪些异常对应哪些返回码,尤其是http返回码大全如下,这么多,

http://www.cnblogs.com/lxinxu...

如何根据具体异常返回对应的返回码呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ぽ尐不点ル 2022-09-12 23:46:34

200:get/put请求成功
201:post请求成功
204:delete请求成功
400:请求异常,如参数错误等
500:未知异常,系统内部的错误
404:not found异常,如get/put/delete未找到对应资源

1、创建不同类型的自定义异常
2、在SpringMVC中可以编写一个异常解析器,异常统一交给这个解析器来处理,判断抛出来的是哪种类型的异常,然后返回对应的状态码。

public class ServerExceptionResolver implements HandlerExceptionResolver{
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest,
                                         HttpServletResponse httpServletResponse, Object o, Exception e) {
        

        //返回异常信息
        if (e instanceof AuthenticException) {
            //保持认证请求处理不变
            AuthenticException ae = (AuthenticException) e;
            HttpResponseUtils.responseErrorlMessage(httpServletResponse, ae.getCode(), ae.getMessage());

        }  else if(e instanceof UnauthorizedException){
            HttpResponseUtils.responseJson(httpServletResponse,
                    new CommonResponse<>(CommonResponse.STATUS_AUTH_ERROR, ErrorCodeEnum.AUTH_ERROR.getMessage()));

        }else {
            //若异常未设置错误信息,则默认为"未知异常".
            HttpResponseUtils.responseJson(httpServletResponse,
                    new CommonResponse<>(CommonResponse.STATUS_UNKNOWN_ERROR, ErrorCodeEnum.UNKNOWN_ERROR.getMessage()));
        }



        return null;
    }
}

3、在spring mvc的配置中配置全局异常的Bean

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文