Erlang Programming/Errors

From Wikibooks, open books for an open world
Jump to navigation Jump to search


We can deal with errors with throw and catch. In this example the value of an argument causes an error which causes an exception to be thrown. The function g() is happy only when the argument is greater than 12. If the argument is less than 13 then an exception is thrown. We try to call g() in start(). If we run into trouble then the exception is caught in the "case catch" structure inside of start().

Sample program listing:

% An example of throw and catch
g(X) when X >= 13 ->
g(X) when X < 13 ->
   throw({exception1, bad_number}).
% Throw in g/1 
% Catch in start/1
start(Input) ->
   case catch g(Input) of
       {exception1, Why} ->
          io:format("trouble is ~w ", [ Why ]);
       NormalReturnValue ->
          io:format("good input ~w ", [ NormalReturnValue ] )
%============================================================== >%   
% sample output:
8> c(catch_it).    
9> catch_it:start(12).
trouble is bad_number ok
10> catch_it:start(13).
good input ok ok