The message in the ArgumentError is only the top half of the output from triggering that error in iex - the other half is from __STACKTRACE__:
iex(4)> try do
...(4)> Jason.decode("{\"24h\":0}", keys: :atoms!)
...(4)> rescue
...(4)> error ->
...(4)> __STACKTRACE__
...(4)> end
warning: variable "error" is unused (if the variable is not meant to be used, prefix it with an underscore)
iex:7
[
{:erlang, :binary_to_existing_atom, ["24h", :utf8],
[error_info: %{module: :erl_erts_errors}]},
{String, :to_existing_atom, 1, [file: 'lib/string.ex', line: 2456]},
{Jason.Decoder, :object, 6, [file: 'lib/decoder.ex', line: 322]},
{Jason.Decoder, :parse, 2, [file: 'lib/decoder.ex', line: 55]},
{:erl_eval, :do_apply, 7, [file: 'erl_eval.erl', line: 744]},
{:erl_eval, :try_clauses, 10, [file: 'erl_eval.erl', line: 987]},
{:elixir, :recur_eval, 3, [file: 'src/elixir.erl', line: 296]},
{:elixir, :eval_forms, 3, [file: 'src/elixir.erl', line: 274]}
]






















