我使用两种方式在elixir中产生了一个进程:
defmodule Second do
def called do
raise "oops"
end
end
spawn(Second.called)
** (RuntimeError) oops
second.exs:3: Second.called/0
spawn(Second,:called,[])
#PID<0.89.0>
iex(2)> 17:42:40.999 [error] Process #PID<0.89.0> raised an exception
** (RuntimeError) oops
这两种方法有什么不同?为什么只有第二个返回进程id,而不是第一个?谢谢
发布于 2017-03-02 13:16:03
在第一个方法中,您直接调用Second.called
,并引发异常,因此spawn
永远不会被调用。第二个版本将调用spawn
,新进程将调用不带参数的Second.called
,然后引发异常。
发布于 2017-03-02 13:07:46
在第一个示例中,代码在到达实际的spawn
之前就已经崩溃了。我想您想要做的是spawn(&Second.called/0)
,它将返回与第二个示例相同的错误。
https://stackoverflow.com/questions/42555603
复制