Current section
Files
Jump to
Current section
Files
lib/util/decode_error.ex
defmodule ExOanda.DecodeError do
@moduledoc """
Error raised when JSON decoding fails.
This error is raised when Jason.decode!/1 encounters invalid JSON
during streaming operations or other JSON parsing scenarios.
"""
@type t :: %__MODULE__{
message: String.t(),
reason: String.t() | atom()
}
defexception [:message, :reason]
@impl true
def exception(%Jason.DecodeError{data: data, position: position}) when not is_nil(position) do
message = "JSON decode error at position #{position}: #{inspect(data)}"
%__MODULE__{message: message, reason: :invalid_json}
end
def exception(%Jason.DecodeError{data: data}) do
message = "JSON decode error: #{inspect(data)}"
%__MODULE__{message: message, reason: :invalid_json}
end
def exception(reason) when is_binary(reason) do
message = "JSON decode error: #{reason}"
%__MODULE__{message: message, reason: reason}
end
def exception(reason) when is_atom(reason) do
message = "JSON decode error: #{reason}"
%__MODULE__{message: message, reason: reason}
end
def exception(error) do
message = "JSON decode error: #{inspect(error)}"
%__MODULE__{message: message, reason: error}
end
end