【发布时间】:2014-09-09 14:17:33
【问题描述】:
我有大约 50 个弹簧控制器,它们可以在响应中返回 null。像这样:
@RequestMapping(value = "/someUrl.controller", method = RequestMethod.GET)
public @ResponseBody Object getObject(@RequestParam("id") Long id) {
Object object = provider.getObject(id);
if (object == null ) {
return throw new EntityNotFoundException();
} else {
return object;
}
}
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(EntityNotFoundException.class)
public @ResponseBody ExceptionDetails handleEntityNotFound(EntityNotFoundException e) {
return createErrorJsonView(e);
}
我的目标是避免对每个控制器进行空检查,并为这种情况创建一些通用异常处理程序。
据我了解,重写 HandlerMethodReturnValueHandler 弹簧处理程序不是一个好主意。
你有什么想法吗?
谢谢!
【问题讨论】:
-
您可以在
provider.getObject(id)函数中执行空检查并从那里抛出异常。 -
这个
@ExceptionHandler有什么问题?还是您不想将所有处理程序重构为throw和EntityNotFoundException?您应该考虑在某些情况下返回null是有效的这一事实。 -
其实,我想我应该总是在返回null时处理这种情况,因为spring将这个null转换为空响应。事实上,我对 jquery 库有疑问,因为它希望得到可以解析的东西。 Mo 的目标是避免在所有控制器中检查空值。在这种情况下,我可以使用 @ControllerAdvice 注释创建一些通用错误处理程序。
-
另外,我有很多不同的 DAO 类和另一个经理。因此,我无法在 provider.getObject(id) 函数中处理这种行为。
标签: java spring-mvc error-handling