Clojure:如何忽略可能从表达式中抛出的异常?

Clojure:如何忽略可能从表达式中抛出的异常?,clojure,Clojure,我使用(try(/10)(catch Exception e)),但它似乎是多余的。有没有更简单的方法? 我使用这个的一个例子是我使用sql/drop table。如果由于表不存在而导致调用失败,这无关紧要。编写如下宏如何: (defmacro swallow-exceptions [& body] `(try ~@body (catch Exception e#))) (swallow-exceptions (/ 1 0)) ; nil 更复杂的例子是。如果在进一步计算中使

我使用
(try(/10)(catch Exception e))
,但它似乎是多余的。有没有更简单的方法?
我使用这个的一个例子是我使用
sql/drop table
。如果由于表不存在而导致调用失败,这无关紧要。

编写如下宏如何:

(defmacro swallow-exceptions [& body]
    `(try ~@body (catch Exception e#)))

(swallow-exceptions (/ 1 0)) ; nil

更复杂的例子是。

如果在进一步计算中使用swallow exceptions表达式的值,则需要确保使用合理的默认值。什么是“合理的”取决于上下文。在异常情况下,扩展宏以返回提供的默认值是很简单的,但要记住这一点。