Current section

Files

Jump to
gsmlg_mnesia lib gsmlg mnesia errors mnesia_exception.ex
Raw

lib/gsmlg/mnesia/errors/mnesia_exception.ex

defmodule GSMLG.Mnesia.MnesiaException do
alias __MODULE__
# Don't raise this error manually, instead call `GSMLG.Mnesia.Error.normalize`
# or `GSMLG.Mnesia.Error.raise_from` to raise these errors.
defexception [:message, :data]
@moduledoc false
@newline "\n "
# Build the Exception struct
def build(error) do
message =
"Mnesia operation failed" <>
@newline <>
info(error) <>
@newline <>
"Mnesia Error: " <> inspect(error)
%MnesiaException{
data: error,
message: message
}
end
# Fetch Mnesia's description of the error
defp info({code, _, _}), do: info(code)
defp info({code, _}), do: info(code)
defp info(code) do
desc = :mnesia.error_description(code)
cond do
is_list(desc) -> to_string(desc)
true -> inspect(desc)
end
end
end