lib/exceptions.ex
defmodule Tempus.ArgumentError do
@moduledoc """
Raised at runtime when an argument passed to function is invalid
"""
defexception [:message, :expected, :passed]
def exception(opts) do
expected = Keyword.fetch!(opts, :expected)
passed = Keyword.fetch!(opts, :passed)
message = "invalid argument: expected ‹#{expected}›, got: ‹#{inspect(passed)}›"
%__MODULE__{message: message, expected: expected, passed: passed}
end
end