If one of the C PL_*() functions in SWI-Prolog.h
returns
failure, this can be either a Prolog-style failure (e.g. from
PL_unify() or PL_next_solution()) or an error. If the
failure is due to an error, it's usually best to immediately return to
Prolog - and this can be done with the PlEx()
function, which turns a Prolog error into a C++ PlException
. PlCheckFail()
calls PlEx() and additionally throws PlFail()
if the failure is for Prolog failure.
PlEx() calls PL_exception()
to see if there is a Prolog exception; if so, the Prolog exception is
converted to a
PlException
object, which is then thrown. For more details
on the C++ exceptions, see section 1.15.
false
, throw PlFail
to
return control to Prolog with failure.PlException
if there was one; otherwise, return the rc.PlFail
to return control to Prolog with failure. This is the same as PlCheckFail()
except it can also specify a
qid_t
query ID.