什么是在业务层中返回业务验证结果的首选方法

时间:2011-03-11 12:51:23

标签: java validation exception java-ee business-logic

假设我们有一个客户端应用程序(web或独立),它使用一种业务层(EJB,Spring服务等)。假设用户想要执行一些业务逻辑(例如创建一些东西)。此操作有一些先决条件,如数据格式,DB中其他对象的存在,权限等。现在这个业务逻辑层的最佳设计是什么,我的意思是如何返回验证错误,指示成功,返回意外错误等?

我知道的方式:

1)

用于验证错误返回,例如具有状态和违规列表的OperationResult对象,

成功:OperationResult,状态=成功,空错误列表,

意外错误抛出运行时异常

2)

验证错误的

抛出具有违规列表的ValidationException(runitme或checked?)

成功:无效或创建实体(如果需要)

意外错误抛出运行时异常

我知道有两种基本方法但每次开始写作时我都很难把它弄好。

1 个答案:

答案 0 :(得分:1)

我对验证异常方法有厌恶,毕竟在验证错误中没有任何异常,所以我发现很难证明为此使用异常。因此,在理论基础上,唯一有效的选择是第一个。

话虽如此,虽然它取决于您正在使用的验证框架*,但通常更容易编写异常版本。

是否应该检查您的验证异常(如果您正在使用它)会打开另一种蠕虫病毒,有些人一般会反对检查异常,其他人会说完全相反。对于我的两个便士,我相信应该为编码错误保留运行时异常,并且只要可能就应该检查“预期的”异常。但我必须强调,这只是我个人的偏好。

*如果您有多个验证器都必须在验证阶段运行,则异常不是很有效。如果您打算在第一个失败的验证步骤中停止,则异常更容易实现,并且可能更具可读性。