2.9.1 PlCheckFail(), PlCheckEx(), and PlCheck_PL() convenience functions
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 PlCheckEx() function,
which turns a Prolog error into a C++ PlException
. PlCheckFail()
calls PlCheckEx() and additionally throws PlFail() if the
failure is for Prolog failure.
PlCheckEx() 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 2.14.
- void PlCheckFail(bool rc)
- If rc is
false
, throwPlFail
to return control to Prolog with failure. - C_t PlWrap(C_t rc, qid_t qid = 0)
- If rc indicates failure or an error, check for an error and
throw a
PlException
if there was one; otherwise, return the rc. - void PlEx(C_t rc, qid_t qid = 0)
- If rc is “false” (non-zero), throw
PlFail
to return control to Prolog with failure. This is the same as PlCheckFail() except it can also specify aqid_t
query ID.