gpt4 book ai didi

java - @ResponseStatus,客户端没有收到错误信息

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:05 26 4
gpt4 key购买 nike

我有带有自定义异常的代码:

@ResponseStatus(value = BAD_REQUEST, reason = "Login is busy")
public class LoginIsBusyException extends RuntimeException{
}

以及一个可以抛出它的方法:

@RequestMapping(method = POST) 
public void registration(@RequestBody UserRest user) throws
LoginIsBusyException{
userService.checkAlreadyExist(user.getLogin(), user.getMail());
user.setActive(false);
UserRest userRest = userService.addUser(user);
Integer randomToken = randomTokenService.getRandomToken(userRest.getMail());
mailService.sendMail(randomToken, userRest.getLogin(), userRest.getMail());
}

问题是客户端只收到错误代码,但没有收到statusText“登录正忙”,已经尝试添加捕获此异常的方法

@ExceptionHandler(LoginIsBusyException.class)
public void handleException(HttpServletResponse response) throws IOException
{
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Login is busy");
}

但是,消息在某处丢失,客户收到以下响应:

最佳答案

您的handleException方法错过了@ResponseBody,并且它使用您当前的代码返回void,即,您没有传递response正文,如下所示:

@ResponseBody
@ExceptionHandler(LoginIsBusyException.class)
public String handleException(HttpServletResponse response) throws IOException
{
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Login is busy");
}

否则您可以使用 ResponseEntity 生成 header 和正文,如下所示

@ExceptionHandler(LoginIsBusyException.class)
public ResponseEntity<String>
handleException(LoginIsBusyException exe) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Login is busy");
}

关于java - @ResponseStatus,客户端没有收到错误信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43263906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com