我的 JEE 7 应用程序由两个实体组成(目前):Owner
和 Company
。我还创建了 OwnerService
,其中包含 boolean OwnerHasCompany(Owner, Company)
和 void removeCompanyOfOwner(Owner, Company)
等方法。当公司
不属于所有者
时,我很困惑该怎么办。我有两个想法:
- 在
removeCompanyOfOwner
中使用ownerHasCompany
方法,当它返回false
时抛出一个异常(但是哪个?IllegalArgumentException
?)。但为了避免此异常,客户端有义务在其代码中使用ownerHasCompany
方法。所以同一个方法会被执行两次。 - 不要检查
所有者
是否拥有公司
,只将其留给客户。 (但我希望服务中有逻辑,并且只在 Controller 中调用正确的方法)。
哪种方式会更好?或者也许还有其他解决方案?
最佳答案
我喜欢使用 API,其中有一个方法可以测试另一个方法何时抛出异常。所以我认为客户端的代码应该是:
if (ownerHasCompany(owner, company)) {
removeCompanyOfOwner(owner, company);
}
方法removeCompanyOfOwner
可以开始于
if (!ownerHasCompany(owner, company))
throw new IllegalStateException();
是的,这意味着 ownerHasCompany
方法被调用两次。我不知道这个检查是如何完成的,但这种低效率似乎是微不足道的。
另一种方法是让removeCompanyOfOwner
返回一个boolean
;如果公司被删除,则 true
;否则 false
。通过此解决方案,removeCompanyOfOwner
方法开始
if (!ownerHasCompany(owner, company))
return false;
关于java - 非法操作 - 我应该抛出异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33946875/