kprolog 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を呼ぶ


一つ上に戻る 目次に戻る