[erlang-questions] erl_syntax[_lib] error handling

Richard Carlsson carlsson.richard@REDACTED
Sat Apr 19 13:39:26 CEST 2014


On 2014-02-24 21:21 , Tuncer Ayaz wrote:
> erl_syntax and erl_syntax_lib seem to favor throwing exceptions over
> returning error terms. I found this hard to use due to the missing
> documenation of what exceptions can be thrown by each function. Only
> erl_syntax_lib:analyze_application/1 documents one exception it might
> throw, and the documentation for other funs just states the following:
> "An exception is thrown if..."
>
> The only way to handle erl_syntax[_lib] errors I've seen so far is to
> catch all exceptions, but that can filter/suppress any kind of
> exception.
>
> What's the recommended way to handle erl_syntax[_lib] errors?

Hi Tuncer. erl_syntax does not try to be systematic about what kind of 
exception gets generated when the input is bad; that would probably make 
the code grow by 50% In general, it will be a function_clause, 
case_clause or badmatch, but there's no good way of separating these 
from an actual bug in erl_syntax. The intended way to use erl_syntax 
with unknown input is to use the type/1 function (throws badarg error if 
it's not a valid AST) and predicates like is_atom/1 to test the input 
before trying to deconstruct it.

    /Richard




More information about the erlang-questions mailing list