Skip to main content

lib/billdog_eng/error.ex

defmodule BilldogEng.Error do
  @moduledoc """
  Exception raised when an API request ultimately fails (after retries).
  """

  defexception [:message, :status, :code, :body]

  @type t :: %__MODULE__{
          message: String.t(),
          status: integer(),
          code: String.t() | nil,
          body: term()
        }

  @doc false
  @spec new(String.t(), integer(), String.t() | nil, term()) :: t()
  def new(message, status, code \\ nil, body \\ nil) do
    %__MODULE__{message: message, status: status, code: code, body: body}
  end
end