1

我有一个具有 gen_fsm 行为的模块。现在我通过在适当的状态/消息中返回标准 {stop, Reason, State} 来终止它。

它似乎正确终止,但在运行时被认为是错误。

这是正常的吗?有没有办法停止 fsm 进程而不会被视为错误?

4

1 回答 1

6

返回值是 {stop,Reason,StateData} 而不是 {stop,StateName,StateData}。

如果原因不是正常或关闭,则会生成错误报告。对于服务器的正常退出,请使用 normal,当服务器被其主管要求退出时使用关闭。

(现在编辑已添加错误详细信息。)

gen_fsm正在打电话client_fsm:terminate(normal, loggedin, {state,#Port<0.144>,12345,"Bob"})

这会导致 function_clause 异常(该函数存在,但没有子句可以与这些参数匹配)。如果您进行更改client_fsm:terminate/3以使该调用成功,则该错误应该消失。

于 2009-02-01T22:27:36.273 回答