具有异常处理的方法的构建器模式

Fis*_*ian 6 java oop exception-handling

我有几个看起来像这样的方法:

public void do(A a, B b);

public void do(A A, C c);

public void do(D d, A a);

public void do(D d, E e, X x, F f, Optional<A> a);
Run Code Online (Sandbox Code Playgroud)

等等,有大约几十种方法基本相同,但参数不同.

现在我想到使用一个构建器模式,它允许我使用这样的功能:

withA(a).withB(b).withX(x).do();
Run Code Online (Sandbox Code Playgroud)

但问题是,有几种方法中的一种抛出异常.如果我使用构建器模式,则do()必须抛出此异常,因此所有客户端都必须处理它.在我看来,这听起来像一个问题.

我的问题:

  • 这是一个问题吗?
  • 如果是,怎么可以避免?

ACV*_*ACV 1

是的。这是一个问题。

您可以:

  1. 如果您知道如何处理异常并且要设置的字段是可选的,请捕获该异常。

  2. 但是,如果当您尝试设置必填字段时抛出异常,则意味着出现问题并且整个操作应该失败。