The macro throw-if-tag-found
checks whether it can find the catch tag catch-tag by using find-throw-tag. If it finds catch-tag it throws to catch-tag the value(s) of evaluating result-form. Otherwise throw-if-tag-found
returns nil
, without evaluating result-form.
The throwing operation is done by a normal throw. Therefore the only the difference between this and cl:throw
is when the tag is not found. In this case, cl:throw
would evaluate the result form and then give an error, but throw-if-tag-found
simply returns nil.
LispWorks User Guide and Reference Manual - 13 Feb 2015