2016-12-30 92 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).