異常後清理

謂詞 setup_call_cleanup/3,當前正被考慮包含在 Prolog ISO 標準中並由越來越多的實現提供,這使我們可以確保在丟擲異常後正確釋放資源。

典型的呼叫是:

setup_call_cleanup(open(File, Mode, Stream), process_file(File), close(Stream))

請注意,在這種情況下呼叫 open/3 後,甚至可能會立即發生異常或中斷。因此,Setup 階段是原子地進行的。在只提供 call_cleanup/2 的 Prolog 系統中,這很難表達。