Error Patterns
Provider Error Macro
Definition:
-define(PRV_ERROR(Reason), {error, {?MODULE, Reason}}).
Usage:
throw(?PRV_ERROR({missing_file, Filename}))
Format Error Callback:
format_error({missing_file, Filename}) ->
io_lib:format("File not found: ~ts", [Filename]).
Error Tuple Returns
Pattern:
-spec do(State) -> {ok, NewState} | {error, Reason}.
Providers return:
{ok, State}: Success{error, Reason}: Failure
Throws vs Returns
Throws: Immediate abortion
throw(?PRV_ERROR(Reason))
Returns: Allow caller to decide
{error, Reason}