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

时间:2015-11-26 20:56:46

标签: java java-ee java-ee-7

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

  • ownerHasCompany内使用removeCompanyOfOwner方法,当它返回false时,然后抛出异常(但是哪个?IllegalArgumentException?)。但是为了避免这种异常,客户端有义务在他的代码中使用ownerHasCompany方法。因此,相同的方法将被执行两次。
  • 请勿检查Owner是否有Company,并且只留给客户。 (但我想在服务中使用逻辑,并且只在我的控制器中调用适当的方法。)

哪种方式会更好?或者可能有另一种解决方案?

1 个答案:

答案 0 :(得分:1)

我喜欢使用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;