集Prolog的標誌和使用捕捉/ 3
假設SWI Prolog的
1)prolog_flags可以改變錯誤的行爲。 首先允許系統捕獲錯誤並報告。 unknown
標誌用於未知謂詞,如fruitID/1
。
set_prolog_flag(report_error,true).
set_prolog_flag(unknown,error).
現在使用了錯誤的謂詞元數時,應該有這樣的錯誤消息:
?- fruitid(5).
ERROR: toplevel: Undefined procedure: fruitid/1 (DWIM could not correct goal)
2)陷阱例外,如本中的代碼, 裹在一個catch目標/ 3謂詞。 來自1)的settigs是stil必需的。 這是在代碼中捕獲未定義謂詞的方法, 或捕獲有關此事的任何異常。 用所需的處理程序替換格式/ 3:
while_running_some_program:-
catch(foodid(5),
error(Err,_Context),
format('You done goofed! ~w\n', [Err])),
rest_of_code.