2016-12-30 124 views
0

我試圖很容易地處理Common Lisp中的錯誤,但是我遇到了一些問題。Common Lisp忽略錯誤

特別是,我有這個功能。

(defun function1 (m) 
(ignore-errors (and (condition-1) (condition-2)) 
    (format t "Error message"))) 

我只是想,如果某些條件無法進入

(and (condition-1) (condition-2)) 

它顯示的錯誤信息,否則只是

T 

我該怎麼辦? 有更好的方法來處理這種類型的錯誤?我在尋找一些非常簡單的東西。

有人可以做一個例子顯示如何使用忽略錯誤?

謝謝。

+1

要清楚,你的意思是'條件 - 1'和'條件 - 2'是可以給出一個錯誤狀況,或者他們只是返回一個表格形式布爾? – jkiiski

+0

@jkiiski都。條件1可能是 - 對函數的調用,該函數應返回布爾值或錯誤 - 或者簡單地爲布爾表達式。 – randy192

+0

@RainerJoswig我正在嘗試人,我是Common Lisp的新手,我只是想顯示一條消息,如果上面的代碼信號錯誤,或返回false。 – randy192

回答

3

您可以使用HANDLER-CASE

CL-USER 101 > (handler-case (and (evenp 2) 
           (oddp 1)) 
       (error (c) 
       (princ c) 
       (values))) 
T 

CL-USER 102 > (handler-case (and (evenp 2) 
           (/ 3 0) 
           (oddp 1)) 
       (error (c) 
       (princ c) 
       (values))) 
Division-by-zero caused by/of (3 0).