%% example -module(my_error_module). -export([atom_to_string/1, format_error/2]). atom_to_string(Arg) when is_atom(Arg) -> atom_to_list(Arg); atom_to_string(Arg) -> erlang:error(badarg,[Arg], [{error_info,#{ module => ?MODULE, cause => #{ 1 => "should be an atom" }}}]). format_error(Reason, [{_M,_F,_As,Info}|_]) -> ErrorInfo = proplists:get_value(error_info, Info, #{}), ErrorMap = maps:get(cause, ErrorInfo), ErrorMap#{ general => "optional general information", reason => io_lib:format("~p: ~p",[?MODULE, Reason]) }. %% example