非法操作——我应该抛出异常吗?

Illegal operation - should I throw an exception?

我的 JEE 7 应用程序包含两个实体(目前):OwnerCompany。我还创建了 OwnerService,其中包含 boolean ownerHasCompany(Owner, Company)void removeCompanyOfOwner(Owner, Company) 等方法。当 Company 不属于 Owner 时,我很困惑我该怎么办。我有两个想法:

哪种方式更好?或者也许还有其他解决方案?

我喜欢使用 API,其中有一种方法可以测试另一种方法何时会抛出异常。所以我认为客户端的代码应该是:

if (ownerHasCompany(owner, company)) {
    removeCompanyOfOwner(owner, company);
}

方法 removeCompanyOfOwner 可以从

开始
if (!ownerHasCompany(owner, company))
    throw new IllegalStateException(); 

是的,这意味着方法ownerHasCompany被调用了两次。我不知道这个检查是如何完成的,但这种低效率似乎是微不足道的。

另一种方法是使 removeCompanyOfOwner return 成为 booleantrue 如果公司被删除,false 否则。使用此解决方案,方法 removeCompanyOfOwner 开始

if (!ownerHasCompany(owner, company))
    return false;