为什么我得到**(EXIT)错误的返回值:: ok

时间:2017-09-10 12:34:38

标签: elixir

我需要让GenServer监控一项任务,因此,我这样做:

GenServer.call(server_pid, {:monitor_task, self()})
服务器中的

def handle_call({:monitor_task, task_pid}, _from, state) do
  ref = Process.monitor(task_pid)
  {:reply, ref, state}
end

然而,我收到错误:

** (stop) exited in: GenServer.call(#PID<0.768.0>, {:monitor_task, #PID<0.849.0>}, 5000)
    ** (EXIT) bad return value: :ok

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

调用Logger的handle_info回调需要返回{:noreply, state}{:stop, reason, state},但对Logger的调用返回:ok,这是回调的无效返回值,是导致你看到错误的原因。