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

标签 java jakarta-ee java-ee-7

我的 JEE 7 应用程序由两个实体组成(目前):OwnerCompany。我还创建了 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/

相关文章:

java - 从网站爬取数据

css - PrimeFaces Tabview - 调整选项卡的宽度

java - 简单的project/lib和project/web/WEB-INF/lib有什么区别?

java - 如何从远程无状态 session bean 实现接口(interface)?

generics - XML 或 JSON 的 JAX-RS 响应不起作用

java - JDialog:在 Jdialog 处于 Activity 状态时访问 Jframe

java - 在同一 Activity 中从工具栏搜索 View 获取查询字符串?

java - 无法通过持久性删除来删除 jpa 子实体

java - 缺少方法 org.apache.commons.io.FileUtils.forceMkdirParent?

java - 使用泛型的泛型/系统架构的问题