error_protect, exception, exception_handler
MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

error_protectは、call/2と同様に「ゴール」を実行しますが、これはユ−ザ定義のエラ−保護のもとで行われます。「ゴール」の実行中に例外やエラ−が生じると、関連する例外メッセ−ジが「例外処理」の最初の引数に単一化され、「例外処理」が実行されます。

ユ−ザはexception_handler/3を使って例外に対する処置を定義することができます。この述語はユ−ザがアサ−トするまではIF/Prologには定義されていません。exception_handler/3がアサ−トされると、「例外処理」は適当な「ゴ−ル」のアトムか複合項をとらなければなりませんが、「メッセ−ジ」や「ゴ−ル」はユ−ザによって値を与えられる必要はありません。IF/Prologはメッセ−ジと値を持った「ゴ−ル」でexception_handlerを呼び出し、現在の「ゴ−ル」と「メッセ−ジ」をユ−ザによってアサ−トされたものに単一化しようとします。たとえば任意の「ゴ−ル」の実行中の特定の例外をトラップするためには、ただ「メッセ−ジ」に値を代入します。

ユ−ザは、exception/2やraise_error/0,/1を使ってIF/Prologに例外が生じたことを知らせることができます。どちらの述語も、指定されていればメッセ−ジで現在の「ゴ−ル」の実行を停止し、上述のようにユ−ザの定義した、あるいはデフォルトの例外処理を実行します。「ゴ−ル」は、exception_handler/3中のゴ−ルに単一化されるか、あるいはシステムの例外処理に使われます。


Up read on...