Spring Boot中查询结果为空时是否应抛出EntityNotFoundException?
问题解答
这得看你的业务需求来决定,没有绝对的标准答案:
如果业务逻辑要求「传入的姓名必须对应至少一名员工」,那你就需要判断列表为空时抛出
EntityNotFoundException。这样全局异常处理器会捕获这个异常,返回你预设的统一错误响应(比如HTTP 404状态码+自定义错误信息),避免前端收到空列表后还要额外处理异常场景。示例代码:
public List<Employee> findByName(String name) { List<Employee> employees = employeeRepo.findByName(name); if (employees.isEmpty()) { throw new EntityNotFoundException("未找到名为" + name + "的员工"); } return employees; }如果业务逻辑允许「没有匹配姓名的员工」这种情况存在,那直接返回空列表即可。前端可以根据空列表展示“暂无数据”之类的提示,这种场景下抛异常反而会增加不必要的错误处理成本。
另外补充一点:EntityNotFoundException原本更多用于单个实体不存在的场景(比如根据ID查询单个员工找不到),但如果你的业务把「无匹配结果的列表」也定义为异常场景,那用它完全没问题,只要全局处理器能正确处理就行。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

