我有一个具有 gen_fsm 行为的模块。现在我通过在适当的状态/消息中返回标准 {stop, Reason, State} 来终止它。
它似乎正确终止,但在运行时被认为是错误。
这是正常的吗?有没有办法停止 fsm 进程而不会被视为错误?
我有一个具有 gen_fsm 行为的模块。现在我通过在适当的状态/消息中返回标准 {stop, Reason, State} 来终止它。
它似乎正确终止,但在运行时被认为是错误。
这是正常的吗?有没有办法停止 fsm 进程而不会被视为错误?
返回值是 {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
以使该调用成功,则该错误应该消失。