Spring ControllerAdvice全局异常处理程序未返回响应
我有一个Groovy Spring Boot微服务,它返回一个帖子列表。请求进入控制器,控制器调用服务类中的方法,如果没有找到POST,则抛出自定义错误消息 我已经创建了一个带有@ControllerAdvice注释的控制器,我想截获错误,并创建了一个特定于自定义错误的处理程序。它应该返回一个POJO。目前正在调用ControllerAdvice处理程序,但来自microservice的响应是500错误 控制器Spring ControllerAdvice全局异常处理程序未返回响应,spring,exception,groovy,error-handling,controller-advice,Spring,Exception,Groovy,Error Handling,Controller Advice,我有一个Groovy Spring Boot微服务,它返回一个帖子列表。请求进入控制器,控制器调用服务类中的方法,如果没有找到POST,则抛出自定义错误消息 我已经创建了一个带有@ControllerAdvice注释的控制器,我想截获错误,并创建了一个特定于自定义错误的处理程序。它应该返回一个POJO。目前正在调用ControllerAdvice处理程序,但来自microservice的响应是500错误 控制器 @RequestMapping(value ='getCommentList', m
@RequestMapping(value ='getCommentList', method = RequestMethod.POST)
def getCommentList(@RequestBody requestParams) {
def response
String userId = requestParams.userId
String uuid = requestParams.uuid
response = commentService.findCommentsByUserIdAndUuid(userId, uuid)
}
服务方式
def findCommentsByUserIdAndUuid(String userId, String uuid) {
User user = userRepository.findByUserId(userId)
Long userId = tenant?.id
List responses = commentRepository.findCommentsByUserAndUuidNotDeleted(userId, uuid)
if (responses.size() == 0) {
throw new CommentsNotFoundException()
} else {
def data = JsonOutput.toJson(retMap)
return data
}
}
自定义异常类
包com.news.exception
class CommentsNotFoundException extends Exception {
String errorMessage
def dataReturned
public commentsNotFoundException() {
NewsFeedMessage.buildRequestErrorMessageWithData(errorMessage, dataReturned)
}
}
将要返回的POGO
package com.news.utils
import org.springframework.http.HttpStatus
class NewsFeedMessage {
int httpStatus
String type
String message
def dataReturned
def subMessages = []
static NewsFeedMessage buildRequestErrorMessageWithData(mainMessage, data) {
return new NewsFeedMessage(
httpStatus: 400,
message: mainMessage,
dataReturned: data
)
}
}
和全局异常处理程序with@ControllerAdvice注释
package com.news.exception
import com.newa.utils.NewsFeedMessage
import org.springframework.boot.configurationprocessor.json.JSON
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.ControllerAdvice
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.context.request.WebRequest
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler
@ControllerAdvice
public class GlobalExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(CommentsNotFoundException.class)
public NewsFeedMessage handleException() {
def response = NewsFeedMessage.buildRequestErrorMessageWithData("testing 1234", [])
//return response as JSON
}
}
调试时,代码将尽可能
def response = NewsFeedMessage.buildRequestErrorMessageWithData("testing 1234", [])
然而,没有任何回报。
使用邮递员返回的邮件为:
{
"timestamp": "2020-10-23T16:27:35.572+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No message available",
"path": "/comment/getCommentList"
}
这里有什么明显错误吗?我认为
NewsFeedMessage
不支持返回类型。如果选中,则有一个关于支持的返回类型的块。尝试返回响应标题(news feedmessage())
我认为news feedmessage
不支持返回类型。如果选中,则有一个关于支持的返回类型的块。尝试返回响应标题(NewsFeedMessage())