当我发送在计算机的当前状态下不可能发生的事件时,我想得到类似异常或任何提示的信息。
什么都没有发生,没有例外。我唯一注意到的是:
stateMachine.sendEvent(myMessage)
返回假。但是以下方法不会返回true:
stateMachine.hasStateMachineError()
所以我想也不例外...!?
有人知道我如何得到这样的错误:“无法在状态机的当前状态下应用此事件”?
非常感谢!
答案 0 :(得分:1)
如果您有未知事件,状态机将不会因错误而失败,它将忽略它。 获得有关无效事件的更多信息的唯一方法是添加状态机侦听器:
public class InvalidEventListener extends StateMachineListenerAdapter {
@Override
public void eventNotAccepted(Message event) {
// it is useless to throw an exception here, it is handled at a higher level
// here you can add custom logic, but limited.
super.eventNotAccepted(event);
}
}
您必须将此侦听器添加到您的状态机:
stateMachine.addStateListener(new InvalidEventListener());