Elixir/Phoenix处理erlang错误

Ily*_*lya 3 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
Run Code Online (Sandbox Code Playgroud)

这种情况适用于OS的错误(无论是否开始),但不适用于erlang错误,导致凤凰告诉我:enoent. 在此输入图像描述

Dog*_*ert 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
Run Code Online (Sandbox Code Playgroud)

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