K-Prolog Compiler Version 6.0 
たとえば、不正な算術式を is に渡したときはエラーですが、
var の引数としてはエラーではありません。単に fail するだけです。
また、未定義述語を実行しようとしたときは、
既定値として単にfailするようになっていますが、
組込み述語 set_prolog_flag/2 によってエラーにすることができます。
set_prolog_flag/2 により、処理系がとる動作を変更できます。
[例] 16: ?- set_prolog_flag(unknown,error). % 未定義述語を実行するとエラー yes 17: ?- set_prolog_flag(unknown,fail). % 未定義述語を単にfailさせる yesエラーが検出されたときには、 throw(error(Error_term,Goal))が呼ばれます。
そのとき、アプリケーションが catch/3 によって このエラーを捕捉していれば、 catch/3の第3引数に指定したゴールが 実行されます。 アプリケーションが捕捉しないエラーは、トップレベルがあれば トップレベルが捕捉し、適切なメッセージを表示します。
[例]
18: ?- catch(myApplication,error(Error,Goal),recover(Error,Goal)).
% myApplication 中で発生するかも知れないエラーを捕捉したときに、recover/2を呼ぶ