Learnyousomeerlang.com の記事を読んだとき、質問がありました。 http://learnyousomeerlang.com/errors-and-processes
次のように述べています。
例外ソース:
exit(self(), kill)
捕獲されなかった結果:
** exception exit: killed
閉じ込められた結果:
** exception exit: killed
おっと、それを見てください。これは実際にトラップするのは不可能のようです。何か確認してみましょう。
しかし、コードブローでテストしたものには準拠していません:
-module(trapexit).
-compile(export_all).
self_kill_exit()->
process_flag(trap_exit,true),
Pid=spawn_link(fun()->timer:sleep(3000),exit(self(),kill) end),
receive
{_A,Pid,_B}->io:format("subinmain:~p output:~p~n",[Pid,{_A,Pid,_B}])
end.
出力は次のとおりです: **4> trapexit:self_kill_exit()。
subinmain:<0.36.0> 出力:{'EXIT',<0.36.0>,killed}**
Trapped Result: ** exception exit: kill said before に準拠していません。どっちが正しい???