capture d'élixir

defmodule SomeModule do
  @doc """
      iex> SomeModule.do_something()
      {:error, "error: %ArgumentError{message: \\"You provided a wrong argument\\"}"}
  """
  def do_something() do
    raise ArgumentError, "You provided a wrong argument"
  catch
    kind, error -> {:error, "#{kind}: #{inspect(error)}"}
  end

  @doc """
      iex> SomeModule.try_something()
      {:error, "error: %ArgumentError{message: \\"You provided a wrong argument\\"}"}
  """
  def try_something() do
    try do
      raise ArgumentError, "You provided a wrong argument"
    catch
      kind, error -> {:error, "#{kind}: #{inspect(error)}"}
    end
  end
end
Uncommon Nightingale