1

gen_fsm の動作を持つモジュールがあります。現在、適切な状態/メッセージで標準の {stop, Reason, State} を返すことで終了しています。

正常に終了したように見えますが、実行時にエラーと見なされます。

これは正常ですか?エラーと見なされずに fsm プロセスを停止する方法はありますか?

4

1 に答える 1

6

戻り値は {stop,StateName,StateData} ではなく {stop,Reason,StateData} です。

Reason が通常またはシャットダウン以外の場合、エラー レポートが生成されます。サーバーの通常の終了には、サーバーがそのスーパーバイザーによって終了するように求められたときに、通常のシャットダウンが使用されます。

(エラーの詳細が追加されたので編集します。)

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 に答える