Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json Spring引导全局异常处理程序未捕获HttpMessageNodeTableException_Json_Spring Boot_Uncaughtexceptionhandler - Fatal编程技术网

Json Spring引导全局异常处理程序未捕获HttpMessageNodeTableException

Json Spring引导全局异常处理程序未捕获HttpMessageNodeTableException,json,spring-boot,uncaughtexceptionhandler,Json,Spring Boot,Uncaughtexceptionhandler,我有一个全局异常处理程序,它可以很好地捕获从控制器、服务层或存储库层抛出的异常。但是,它无法捕获进入控制器之前发生的异常。具体地说,我有一个POST控制器,它需要一个有效的json主体,如果实际的json主体格式不正确,就会抛出一个httpMessageEndableException,我不知道这个异常是从哪里处理的。响应代码确实是400所以我的问题是,如何使用我自己的逻辑捕获和处理在进入控制器之前发生的消息反序列化异常。 我的全局异常处理程序(适用于从服务层抛出的异常) 控制器需要一个如下形式

我有一个全局异常处理程序,它可以很好地捕获从控制器、服务层或存储库层抛出的异常。但是,它无法捕获进入控制器之前发生的异常。具体地说,我有一个
POST
控制器,它需要一个有效的json主体,如果实际的json主体格式不正确,就会抛出一个
httpMessageEndableException
,我不知道这个异常是从哪里处理的。响应代码确实是
400
所以我的问题是,如何使用我自己的逻辑捕获和处理在进入控制器之前发生的消息反序列化异常。

我的全局异常处理程序(适用于从服务层抛出的异常)

控制器需要一个如下形式的json主体,如果json是有效的,则整个代码工作正常

{
  "description": "string",
  "name": "string",
  "tag": "string"
}
但是,如果实际内容类似于下面的内容(例如,末尾有几个逗号),则会抛出
httpmessagenoteradableexception
,我的处理程序不会捕获它

{
  "description": "this is description",
  "name": "city name",
  "tag": "city tag",,,,
}
这:所以我的问题是,如何使用我自己的逻辑捕获和处理在进入控制器之前发生的消息反序列化异常。

为该特定异常注释并编写exceptionHandler。将此添加到
GlobalExceptionHandler
类:

@ExceptionHandler(HttpMessageNotReadableException.class)
  public ResponseEntity<ErrorResponse> handleMessageNotReadableException(Exception ex, WebRequest request) {
    // some handling
    return generateExceptionResponseEntity(errorMessage, status);
  }
@ExceptionHandler(httpmessagegenoteradableexception.class)
public ResponseEntity HandleMessageGenetradableException(异常示例,WebRequest请求){
//一些处理
返回generateExceptionResponseEntity(错误消息、状态);
}
{
  "description": "this is description",
  "name": "city name",
  "tag": "city tag",,,,
}
@ExceptionHandler(HttpMessageNotReadableException.class)
  public ResponseEntity<ErrorResponse> handleMessageNotReadableException(Exception ex, WebRequest request) {
    // some handling
    return generateExceptionResponseEntity(errorMessage, status);
  }