異常後清理
謂詞 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 系統中,這很難表達。