catch(Goal,ExceptionPattern,Recovergoal)which is equivalent to Goal, except when an exception is raised during the execution of Goal that unifies ExceptionPattern. When such an exception is raised, all of the bindings that have been performed on variables in Goal will be undone, and Recovergoal will be executed to handle the exception. Note that ExceptionPattern is unified with a renamed copy of the exception before Recovergoal is executed. Also note that only exceptions that are raised by a descendant call of Goal can be caught.