Java异常中的HTTP代码

时间:2016-08-12 08:03:28

标签: java http spring-mvc model-view-controller exception-handling

在分层应用程序中,我必须使用Spring Annotation @ResponseStatus定义异常的HTTP代码。

例如:

@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Illegal argument")
public class IllegalContentException{


}

它有效,但我想知道在尝试避免破坏单一责任模式时这是不是一种坏习惯(在这种方法中,异常知道HTTP代码)。

问题是:

  • 是否应该在例外中定义HTTP代码而不计算它们所属的图层?是否应在属于DAO,服务层和/或控制器的异常中定义HTTP代码?

2 个答案:

答案 0 :(得分:2)

如果您不想将响应代码放在每个例外中,一个选项是创建一个集中式异常处理程序,其中@ControllerAdvice类由@ExceptionHandler和{{1}的方法组成注释。

@ResponseStatus

答案 1 :(得分:0)

我相信答案可以在https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc开头找到。

从提供的网站复制并粘贴: “目标是尽可能不在Controller方法中明确处理异常。它们是一个跨领域的问题,可以在专用代码中单独处理。

有三种选择:每个例外,每个控制器或全局。“