gpt4 book ai didi

c++ - 如何防止错误处理的正交区域过渡

转载 作者:行者123 更新时间:2023-12-02 10:32:59 25 4
gpt4 key购买 nike

我想使用Boost MSM创建以下状态机:

Simplified FSM with error states in an orthogonal region

如果正交状态为“B”,我希望能够防止Error事件触发AllOk + Error == InError转换。例如,为所有正交状态指定过渡会很好。就像是:

{AllOk, B} + Error == {AllOk, A}

但是,我找不到使用Boost MSM的方法,也找不到常规的UML命名法,这使我觉得我走错了路。

是否有经典的“UML惯用语”来处理这种行为?

我看到两种可能的解决方案:
  • 保护AllOk + Error == InError,以检查其他状态是否为Blike this response
  • 发送一个更具体的错误(在我的情况下,我正在为机器人编程,因此是CouldNotComputePath),并且如果未处理,则以某种方式将其转换为Error。我不太确定该怎么做。
  • 最佳答案

    好的,我找到一个解决方案:

    可以在MainStateMachine中“捕获”错误事件。如果不是,则在MainStateMachine上触发内部转换,该转换将发送EnterError事件,以使另一个正交状态切换到InError。

    enter image description here

    关于c++ - 如何防止错误处理的正交区域过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61593396/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com