为什么会这样
sequence 图表的激活条是基于栈的:activate A(或消息上的简写 +A)会为 A 压入一条活动生命线,deactivate A(或 -A)则会弹出它。如果在没有先 activate 的情况下调用 deactivate——或者调用了两次 deactivate——就会导致没有东西可弹。
这种情况常常发生在编辑 sequence 图表之后:某一行 activate 被删除或挪动了位置,但对应的 deactivate 却被遗留了下来。
如何修复
在 deactivate 之前补上缺失的 activate A,或者删掉多余的 deactivate。对于简单的调用/返回配对,用简写 A->>+B: request ... B-->>-A: response 比分开写 activate/deactivate 更容易保持平衡。