spring@exceptionhandler没有覆盖默认响应

yks3o0rb  于 2021-07-15  发布在  Java
关注(0)|答案(2)|浏览(429)

**结案。**此问题不可复制或由打字错误引起。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

上个月关门了。
改进这个问题
我试图覆盖spring rest上异常的默认响应,插入一个实体列表:
在@restcontroller上:

@ExceptionHandler(EntityConflictException.class)
public ResponseEntity<List<Entity>> exceptionHandler(EntityConflictException exception) {
    return new ResponseEntity<>(exception.getList(), HttpStatus.CONFLICT);
}

例外情况:

@ResponseStatus(value = HttpStatus.CONFLICT)
public class EntityConflictException extends RuntimeException {

    List<Entity> entities;

    public EntityConflictException(List<Entity> entities) {
        super("message");
        this.entities = entities;
    }

    public EntityConflictException(String message) {
        super(message);
    }

    public EntityConflictException(String message, Throwable cause) {
        super(message, cause);
    }

    public List<Entity> getList() {
        return entities;
    }
}

@service上引发异常:

throw new EntityConflictException(entitiesList);

答案总是:

{
    "timestamp": "2021-03-27 20:15:36",
    "status": 409,
    "error": "Conflict",
    "exception": "EntityConflictException",
    "message": "Conflict",
    "path": "/endpoint"
}
9rnv2umw

9rnv2umw1#

我想你必须搬走 @ResponseStatus(value = HttpStatus.CONFLICT) 来自entityconflictexception。它注册为该异常的defalut处理程序,并且不使用自定义异常处理方法。
看看这篇spring引导异常处理的文章,你就会明白你所使用的这两种异常处理方式并不是要一起使用的。同时指出使用 @ResponseStatus 无法覆盖错误消息。

x9ybnkn6

x9ybnkn62#

问题是我把一个hibernate实体传递给responseentity。然后出现了典型的错误“未能延迟初始化”,但是控制台上没有显示这方面的内容。我必须调试才能找到答案。
错误发生在第113行的servletinvaccablehandler方法中

相关问题