请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于第8-9节中@ResponseStatus的使用问题

师兄,下午好!
在第8-9节中,你提到@ResponseStatus使用问题,如下代码所示
但是,你如下写法@ResponseStatus(HttpStatus.FORBIDDEN)这样写的话就写死了,因为当时实际异常产生的@ResponseStatus也可能j是@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)或是其它@ResponseStatus状态码,要怎么样写,才能保证将当时实际产生的状态码@ResponseStatus传给前方呢? 麻烦解答下,谢谢!

-------------------------
@ControllerAdvice
public class RuntimeExceptionHandler {

@ExceptionHandler(RuntimeException.class)
@ResponseBody

// @ResponseStatus(HttpStatus.FORBIDDEN)
public ResponseVo handle(RuntimeException e) {
return ResponseVo.error(ERROR, e.getMessage());
}
}

正在回答 回答被采纳积分+3

1回答

廖师兄助理 2020-04-24 15:24:30

这是后端人为约定的http状态码,你不使用这个注解,也会有默认的,

0 回复 有任何疑惑可以回复我~
  • 提问者 网络时空 #1
    但是不使用这个注解,默认输出为200状态码就不正确了啊!你视频演示也看到了,如果不写,就像你视频中说的用error()方法,抛出来是用默认的200状态码传给前方了,这显示不正确啊!因为实际的异常RuntimeExcetion对应的状况码是500,后方应该要传500状态码给前端才行,而不应该是默认的200状态码啊!
    
    其实我想问的是如下问题
    我们能否拿到系统产生实际的错误状态码500,而不需要人为约定或指定?
    回复 有任何疑惑可以回复我~ 2020-04-24 15:41:07
  • 廖师兄助理 回复 提问者 网络时空 #2
    懂你说的了,http的状态码和返回信息里的code是两个东西,前端是获取返回信息里的code来进行处理,而不是获取http的状态码,返回信息里的code可以通过后端自定义异常返回给前端,
    回复 有任何疑惑可以回复我~ 2020-04-29 12:41:26
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信