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

woo*_*ngs 3 clojure

我用,(try (/ 1 0) (catch Exception e))但似乎多余.有更简单的方法吗?我使用它的一个例子就是我这样做sql/drop-table.如果该调用因为表不存在而失败并不重要.

ber*_*eal 7

如何编写这样的宏:

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

(swallow-exceptions (/ 1 0)) ; nil
Run Code Online (Sandbox Code Playgroud)

这篇文章中有更复杂的例子.