如何在 Clojure 中捕获多个异常?

2024-03-07

我的 Clojure 代码有一些 java 互操作,其中的方法会引发多个异常。我希望与他们每一个人打交道。根据 Clojure 文档:

(try expr* catch-clause* finally-clause?)
catch-clause -> (catch classname name expr*)

它没有提到捕获多个异常。在 Clojure 中可以这样做吗?

谢谢你!


和Java中一样,可以声明多个catch一个接一个的表达式,它们将按照声明的顺序进行匹配 - 首先Exception1,如果不匹配则Exception2等等,以及finally部分将始终被执行。

(try <some code>
    (catch Exception1 e1 (prn "in catch1"))
    (catch Exception2 e2 (prn "in catch2"))
    (finally (prn "in finally")))

事实上,文档中已经指定了这一点,(try expr* catch-clause* finally-clause?)意味着你可以有“零个或多个表达式”、“零个或多个 catch 子句”和“零个或一个 finally 子句”作为try表达。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Clojure 中捕获多个异常? 的相关文章