Whenever the Prolog system encounters a situation where it cannot continue execution, it raises an exception. For example, if a built-in predicate detects an argument of the wrong type, it raises a type_error exception. The manual page description of each built-in predicate lists the kinds of exceptions that can be raised by that built-in predicate.

The default effect of raising an exception is to terminate the current computation and then print an error message. After the error message, you are back at Prolog's top level. For example, if the goal

     X is a/2

is executed somewhere in a program you get

     ! Type error in argument 2 of is/2
     ! number expected, but a found
     ! goal:  A is a/2
     | ?-

Particular things to notice in this message are:

This character indicates that this is an error message rather than a warning1 or informational message.
Type Error
This is the exception class. Every exception raised by the system is categorized into one of a small number of classes. The classes are listed in ref-ere-err.
The goal that caused the exception to be raised.


  1. The difference between an error (including exceptions) and a warning: A warning is issued if Prolog detects a situation that is likely to cause problems, though it is possible that you intended it. An error, however, indicates that Prolog recognizes a situation where it cannot continue.