我有一个具有gen_fsm行为的模块.现在我通过在适当的状态/消息中返回标准{stop,Reason,State}来终止它.
它似乎正确终止,但它在运行时被视为错误.
这是正常的吗?有没有办法停止fsm进程而不将其视为错误?
返回值为{stop,Reason,StateData}而不是{stop,StateName,StateData}.
如果Reason不是正常或关闭,则会生成错误报告.对于正常退出服务器使用正常,当服务器被其主管要求退出时,将使用shutdown.
(现在编辑已添加错误详细信息.)
gen_fsm
正在打电话 client_fsm:terminate(normal, loggedin, {state,#Port<0.144>,12345,"Bob"})
这导致了一个function_clause异常(该函数存在但没有子句可以与这些参数匹配).如果您更改client_fsm:terminate/3
以使该调用成功,则错误应该消失.