Did you know ... | Search Documentation: |
![]() | Handling Python errors in Prolog |
If py_call/2 or one of the other predicates that access Python causes Python to raise an exception, this exception is translated into a Prolog exception of the shape below. The library defines a rule for print_message/2 to render these errors in a human readable way.
error(python_error(ErrorType, Value, Stack)
, _)
Here, ErrorType is the name of the error type, as an atom,
e.g.,
’TypeError'
. Value is the exception object
represented by a Python object reference. Stack is either @none
or an object that captures the Python stack. The library(janus)
defines the message formatting, which makes us end up with a message
like below.
?- py_call(nomodule:noattr). ERROR: Python 'ModuleNotFoundError': ERROR: No module named 'nomodule' ERROR: In: ERROR: [10] janus:py_call(nomodule:noattr)