Elixir / Phoenix处理erlang错误

时间:2017-09-02 08:21:11

标签: error-handling elixir phoenix-framework

我使用System.cmd命令处理文件。但是,如果在系统上找不到文件,则会引发ArgumentError,特别是Erlang error: :enoent。 如何使用案例功能处理此错误?到目前为止,这是我的代码:

case System.cmd(generate_executable(settings), ["start"]) do
  {output, 0} ->
    IO.inspect("Start successful")
  {output, error_code} ->
    IO.inspect("Start failed")
end

这种情况适用于OS的错误(无论是否开始),但不适用于erlang错误,导致凤凰告诉我:enoent。 enter image description here

1 个答案:

答案 0 :(得分:6)

您必须使用try / rescue

try do
  case System.cmd(generate_executable(settings), ["start"]) do
    {output, 0} ->
      IO.inspect("Start successful")
    {output, error_code} ->
      IO.inspect("Start failed")
  end
rescue
  error ->
    IO.inspect(error)
end

当可执行文件不存在时,您应该会看到%ErlangError{original: :enoent}IO.inspect打印的rescue