Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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}