[erlang-questions] Old school exceptions vs. new age one

Maxim Treskin <>
Mon Apr 28 14:27:27 CEST 2008


Hello

According Pragmatic Programming Erlang there is two syntax of exceptions:
Old-style:
<pre>
case (catch foo(...)) of
    {'EXIT', Why} ->
        ...
    Val ->
       ...
end
</pre>

and new-style:
<pre>
try foo(...) of
    Val -> ...
catch
    exit: Why ->
         ...
end
</pre>

If I use new-style syntax, I have not detailed exception cause
explanation, like this:
<pre>
3> try lists:sort([1,2,3]) catch exit:Why -> io:format("~p~n", [Why]) end.
[1,2,3]
4> try lists:sort(abc) catch exit:Why -> io:format("~p~n", [Why]) end.
** exception error: function_clause
</pre>

But if I use old-style syntax, I have this:
<pre>
5> case (catch lists:sort(abc)) of {'EXIT', Why} -> io:format("~p~n",
[Why]) end.
{function_clause,[{lists,sort,[abc]},
                  {erl_eval,do_apply,5},
                  {erl_eval,expr,5},
                  {erl_eval,expr,5},
                  {shell,exprs,6},
                  {shell,eval_exprs,6},
                  {shell,eval_loop,3}]}
ok
</pre>

Can you say me, why is new-style better than old?

Thank you

-- 
Maxim Treskin



More information about the erlang-questions mailing list