gpt4 book ai didi

json - 当我尝试在 Spring Boot 应用程序中将自定义错误传递给客户端时发生异常

转载 作者:行者123 更新时间:2023-12-01 01:43:14 24 4
gpt4 key购买 nike

java.lang.IllegalStateException: Cannot call sendError() after the response has been committed



如上所述,我在行响应 .sendError() 方法中遇到错误。我已经在互联网上搜索了 4 天。但我无法弄清楚问题所在。这个问题的原因是什么?

我有一个自定义异常类。
在以下代码中,catch 块成功捕获了我的自定义异常。但是当我尝试将它发送到客户端时,它会返回上面提到的异常。

我已经试过了
解决方案 1 – Controller 级别 @ExceptionHandler
解决方案 2 – HandlerExceptionResolver
解决方案 3 – @ControllerAdvice
解决方案 4 – ResponseStatusException

解决上述问题的方法。但对我不起作用:(

我已将错误代码和错误消息添加到响应正文中。然后我可以成功地得到错误。但这不是我想要的方式。
@RequestMapping(value="/getMemberID/", method=RequestMethod.POST ,headers ="Accept=application/json")
public ResponseMemberID getMemberID(@RequestBody RequestMemberID request,HttpServletResponse response, @Context HttpServletRequest _request ) throws Exception {

Member_info memberinfo = new Member_info();
ResponseMemberID _response =new ResponseMemberID();

try {
memberinfo = memberinfoservice.getMemberID(request.getPin(),request.getMsisdn());
_response.setMember_id(memberinfo.getMember_id());

}catch(MemberNotFoundException exp) {

response.sendError(exp.getErrorCode(), exp.getErrorMessage());
}

return _response;
}

我需要使用上面的 sendError() 方法将错误代码和错误消息作为 JSON 响应获取。异常成功进入 catch 块。

最佳答案

这里,
1)您需要为自定义异常添加错误处理程序
2) 并且错误处理程序会抛出异常

一些有用的链接:Recommended way of dealing with spring hibernate SQL errors

Is there a simpler exception handling technique for Spring?

注意:这种方法已经过测试,我正在我的应用程序中使用它。

@RestControllerAdvice
@RequestMapping(produces = "application/json")
public class DefaultExceptionHandler extends ResponseEntityExceptionHandler {


@ExceptionHandler(MemberNotFoundException .class)
@ResponseStatus(value = HttpStatus.CONFLICT)
public Map<String, String> handleConstraintViolationException(ConstraintViolationException ex) {
Map<String, String> response = new HashMap);
// set your response
return new ResponseEntity<>(response, ex.getStatus());
}

}

来自, getMemberID , 删除 trycatch堵塞。

关于json - 当我尝试在 Spring Boot 应用程序中将自定义错误传递给客户端时发生异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53954374/

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