0

我在 Java 中有一个小状态机,它有一个不寻常的状态。

问题是ABORT...

任务可以有两种最终状态:SUCCESSFULFAILED

ABORT但有时在队列中、在执行之前和执行期间执行任务会很好。

虽然ABORTED是最终状态,但我不想有两个(甚至 N 个)失败状态。

FAILED然后ABORTED必须进行检查。我还可以看到其他失败的状态,例如TIMEOUT.

我想我可能有一个失败的通用原因......如果我想检查它失败的原因,这可能是一个TimeoutException, 。AbortedException那我只能看看原因了。

对此也不是很满意。

有什么想法吗?

4

1 回答 1

1

仅抽象地理解您的问题,这是我对这个状态机的想法。

我认为FAILED需要是一个包含诸如ABORTED, TIMEOUT,SEGFAULT等原因的类别UNKNOWN。我不喜欢FAILED它似乎表明程序或环境中存在一些缺陷,但我想不出更好的反义词来SUCCESSFUL表达相同的意思。

如果您关心 Java 框架的细节,那么您可以轻松地拥有一个enum表示这些状态的函数,而不会有太多麻烦。您只会检查 SUCCESSFUL 或 !SUCCESSFUL,因为所有不成功的事情可能都应该在某种程度上进行类似的处理。

虽然您可以采用 Exception 路线,但我认为拥有 Exception 并不明智AbortedException,尤其是在这实际上不是特殊情况的情况下。如果可能,预期的代码不应触发异常。

于 2013-09-29T23:10:08.730 回答