gpt4 book ai didi

java - 在 Weblogic 上使用 Spring 在 REST 中定义自定义错误消息

转载 作者:行者123 更新时间:2023-12-01 20:23:13 25 4
gpt4 key购买 nike

我在 weblogic 10.3.6 上托管 Spring Boot 应用程序以获取 REST api我想实现这两个功能:

  1. 每当发生自定义异常时,我都会发送带有消息的 http 响应,例如500 - “由于某些原因,无法解析请求......”
  2. 每当抛出任何错误时,我都想获取通常打印到控制台的堆栈跟踪(用于调试目的)

我尝试通过以下方式解决第一部分:

@ControllerAdvice
public class ExceptionHandlerAdvice {


@ExceptionHandler(MyException.class)
public ResponseEntity handleException(MyException e) {

return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}

但是作为响应,我只收到 500 内部服务器错误,没有消息

至于第二部分,我尝试了类似的方法,但也没有错误消息。

我该如何解决这个问题?

编辑:我能实现的最好的结果是删除 ExceptionHandlerAdvice 并在我的异常类上使用注释,如下所示:

@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR, reason="This is a message I'd like to send")

它有效,但我必须将代码中的一些变量添加到消息中,而此方法不允许这样做

编辑2:这有点奇怪,也许是 weblogic 服务器的行为,但是当我将 httpStatus 设置为 HttpStatus.ACCEPTED 时,我可以看到该消息,如果它是 HttpStatus.Forbidden 或任何其他 4xx 错误,我只会收到没有消息的错误

最佳答案

创建'ResponseEntity ' 带有消息和状态的对象并返回它,它将显示错误消息。

/**
* HTTP_STATUS - 500 -Service Unavailable.
*
* @param exception
* Catches the following: MyException
* @return
*/
@ExceptionHandler({ MyException.class})
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public static ResponseEntity<?> handleConnectionErrorResponse(MyException exception) {
return new ResponseEntity<String>("Some error occurred at server", HttpStatus.INTERNAL_SERVER_ERROR);
}

关于java - 在 Weblogic 上使用 Spring 在 REST 中定义自定义错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44280604/

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