私はErlangが初めてです。今、私はプロセスのリンクについて学んでいます。次の実験の後、私は少し混乱しました:
3> process_flag( trap_exit, true ).
false
4> try 1+1, spawn_link( unknown_module, unknown_function, [] ) of
4> Pid -> Pid
4> catch
4> _:_ -> err
4> end.
<0.37.0>
5>
=ERROR REPORT==== 18-Jul-2012::16:01:32 ===
Error in process <0.37.0> with exit value: {undef,[{unknown_module,unknown_function,[],[]}]}
5>
5> flush().
Shell got {'EXIT',<0.37.0>,{undef,[{unknown_module,unknown_function,[],[]}]}}
ok
予想どおり、作成されたプロセスから Pid を取得しましたが、そのプロセスは不明なモジュールと機能のために失敗したため、それに関するメッセージが返されました。
その後、私は次に試しました:
6> try spawn_link( unknown_module, unknown_function, [] ) of
6> Pid -> Pid
6> catch
6> _:_ -> err
6> end.
** exception error: no try clause matching <0.40.0>
そして、インタープリタープロセスが Pid を抽出できずに失敗する理由がわかりません
ありがとう
PS
簡単に言うと、次のコードがインタープリター プロセスを中断する理由 (** 例外エラー: <0.40.0> に一致する try 句がありません)
try spawn_link( unknown_module, unknown_function, [] ) of
Pid -> Pid
catch
_:_ -> err
end.
そして、このコードがインタープリタープロセスを中断しない理由 (<0.37.0> を返す)
try 1+1, spawn_link( unknown_module, unknown_function, [] ) of
Pid -> Pid
catch
_:_ -> err
end.
???