我希望能够捕获由系统或用户(无论哪个)引发的异常,并将其包装成返回某些值的形式。
我写了一个宏来实现,但是它并没有起作用。
宏:
(defmacro safe-fn
[form]
(try
`(do ~form)
(catch Throwable e
1)))
使用方法:(safe-fn (throw (RuntimeException. "Try me!")))
实际输出:RuntimeException Try me! clojure-brave-and-true.core/eval2219 (form-init6122238559239237921.clj:1)
期望输出:1