Rest Dao设计和异常处理

时间:2011-08-19 21:41:53

标签: java rest exception-handling dao

我必须设计一个调用REST WS的DAO。 此WS必须从给定的用户名和密码返回用户凭据。

案例1:找到了用户=> REST WS发送http代码200和凭证响应。

案例2:未找到用户=> REST WS发送http代码400和带有原因的错误对象。

案例3:找到了用户,但他的帐户已被停用=> REST WS发送http代码400和错误对象以及原因。

案例4:REST WS不可用

我的DAO中映射REST WS响应的最佳方法是什么?

1 - 我在我的DAO中抛出funtionnal检查的异常以处理错误对象的情况,并且在正常情况下我返回凭证响应对象。当REST WS不可用时,我抛出一个未经检查的异常

2 - 我没有在我的DAO中抛出任何函数异常,因为它是服务层的工作。我返回REST WS返回的内容,例如包装对象中的凭据响应和错误响应,我让服务层检查这些对象以执行正确的工作。当REST WS不可用时,我抛出一个未经检查的异常

3 - 我只针对错误情况抛出未经检查的异常,我让服务层决定如何处理它。我只返回凭据回复。

非常感谢你。

2 个答案:

答案 0 :(得分:1)

我更喜欢选项1,因为您的DAO负责了解远程数据源返回的内容。您的服务层位于您的DAO之上,不应该了解远程源的任何复杂性;这包括如何通过电线返回错误。

答案 1 :(得分:1)

HTTP协议中的4XX响应被定义为客户端错误,我认为有资格在DAO层中抛出异常。然后,错误对象只是抛出异常的表示。

如果您应该抛出已检查或未经检查的异常,则可能是长时间讨论的基础,最终取决于项目中的个人偏好或一般编码指南。抛出异常后,您可以将异常类型映射到相应的HTTP错误代码,例如BadCredentialsException变为HTTP错误400任何无法映射的内容都会成为500内部服务器错误