Elixir/Phoenix处理Erlang错误

3

我正在使用System.cmd命令处理文件。但是,如果系统上找不到该文件,则会引发ArgumentError,具体来说是Erlang错误::enoent。 如何使用case函数处理此错误?以下是我的代码:

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

这些情况适用于操作系统错误(无论是否启动),但不适用于Erlang错误,导致Phoenix告诉我:enoent。 在此输入图像描述
1个回答

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

当可执行文件不存在时,你应该在rescue中看到IO.inspect输出的%ErlangError{original: :enoent}


嘿@Dogbert,谢谢你的回答!我不知道try/rescue,现在会去看一下。 - Ilya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接