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

12 java exception clojure

我的Clojure代码有一些java-interop,它有一个抛出多个异常的方法.我希望与他们中的每个人打交道.根据Clojure文档:

(try expr* catch-clause* finally-clause?)
catch-clause -> (catch classname name expr*)
Run Code Online (Sandbox Code Playgroud)

它没有提到捕捉多个例外.是否有可能在Clojure中这样做?

谢谢!

Ósc*_*pez 24

它与Java中的相同,你可以catch一个接一个地声明几个表达式,并且它们将按照它们声明的相同顺序进行匹配 - 首先Exception1,如果它不匹配则Exception2等等,并且该finally部分将始终为执行.

(try <some code>
    (catch Exception1 e1 (prn "in catch1"))
    (catch Exception2 e2 (prn "in catch2"))
    (finally (prn "in finally")))
Run Code Online (Sandbox Code Playgroud)

实际上,这在文档中指定,(try expr* catch-clause* finally-clause?)意味着您可以将"零个或多个表达式","零个或多个catch子句"和"零个或一个finally子句"作为try表达式的一部分.