Java 如何创建自定义;“请求正文缺失”;Spring启动中的错误

Java 如何创建自定义;“请求正文缺失”;Spring启动中的错误,java,spring,exception,error-handling,Java,Spring,Exception,Error Handling,要创建自定义错误,我们需要知道它是什么类型的异常错误。问题是我无法确定“请求主体缺少一个”是什么类型的错误。起初我以为它被归类为MethodArgumentNotValidException,但它没有捕获错误 我为错误创建控制器建议 @覆盖 受保护的响应标题handleMethodArgumentNotValid(MethodArgumentNotValidException异常、HttpHeaders标头、HttpStatus状态、WebRequest请求){ MyObject错误=MyObj

要创建自定义错误,我们需要知道它是什么类型的异常错误。问题是我无法确定“请求主体缺少一个”是什么类型的错误。起初我以为它被归类为
MethodArgumentNotValidException
,但它没有捕获错误

我为错误创建控制器建议

@覆盖
受保护的响应标题handleMethodArgumentNotValid(MethodArgumentNotValidException异常、HttpHeaders标头、HttpStatus状态、WebRequest请求){
MyObject错误=MyObject.failure(“无效参数”);
log.error(“参数无效”,异常);
返回新的ResponseEntity(错误,new-HttpHeaders(),HttpStatus.OK);
}
控制器

@PostMapping(value = "/tes")
public MyObject<MyRes> myTest(@Valid @RequestBody MyReq req, HttpServletRequest hsReq) throws Exception{
        return myService.updateTestData(req);
}
@PostMapping(value=“/tes”)
公共MyObject myTest(@Valid@RequestBody MyReq,HttpServletRequest hsReq)引发异常{
返回myService.updateTestData(req);
}
我用Postman调用API

*带括号的首次试用

*第二次试用-无括号

没有发生错误


我的问题是,当请求中根本没有附加请求主体时,如何处理此错误。在这种情况下,我也想返回“invalid param”错误。

您不是在使用验证注释吗?它们为您创建错误响应(并可以验证所需的参数)。如果您想自定义错误消息,请创建一个@Component,扩展DefaultErrorAttributes并覆盖getErrorAttributes。@SledgeHammer是的,我做了。但是如果我没有放括号,它就不会捕捉到异常。我不明白为什么只有在我放上支架的时候它才会起作用,如果我拆下支架,我就认不出丢失的尸体了。如果我删除了自定义错误消息或删除了
@ControllerAdvise
,则会出现默认消息错误。您不是在使用验证注释吗?它们为您创建错误响应(并可以验证所需的参数)。如果您想自定义错误消息,请创建一个@Component,扩展DefaultErrorAttributes并覆盖getErrorAttributes。@SledgeHammer是的,我做了。但是如果我没有放括号,它就不会捕捉到异常。我不明白为什么只有在我放上支架的时候它才会起作用,如果我拆下支架,我就认不出丢失的尸体了。如果我删除了自定义错误消息或删除了
@ControllerAdvise
,则会出现默认消息错误。