QP_exception_term()

Synopsis

     #include <quintus/quintus.h>
     
     int QP_exception(term)
     QP_term_ref term;
     

A function that users can call when their call to Prolog signals an error. If QP_query() returns QP_ERROR then users can call QP_exception_term() to get at the exception term signalled.

Description

If C calls Prolog and the Prolog goal raises an exception, QP_query() (or QP_next_solution()) returns the value QP_ERROR. If the user wants to get at the exception term that has been raised, they can call the function QP_exception_term(). QP_exception_term() takes a QP_term_ref as argument and returns a Prolog term.

Example

                                     
foo.pl
:- extern(error). error :- raise_exception(error_term(from_prolog)).
                                      
foo.c
QP_pred_ref pred; if ((pred = QP_predicate("error",0,"user")) != (QP_pred_ref) QP_ERROR) { if (QP_query(pred) == QP_ERROR) { QP_term_ref err_term = QP_new_term_ref(); QP_exception_term(err_term); } }

Once you get err_term, you can use functions such as the QP_get_*() family to take apart the error term or to print it.

See Also

QP_query(), QP_next_solution(), raise_exception/3 ref-ere