【问题标题】:How to catch multiple exceptions in Clojure?如何在 Clojure 中捕获多个异常?
【发布时间】:2012-06-04 00:13:29
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: java exception clojure


    【解决方案1】:

    这和Java一样,你可以一个接一个地声明几个catch表达式,它们会按照声明的顺序被匹配——首先是Exception1,如果不匹配则@ 987654324@ 等等,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 的一部分表达。

    【讨论】:

    • 优秀的'Kleene star,它永远不会让我失望:)
    猜你喜欢
    • 2021-04-11
    • 1970-01-01
    • 2013-03-17
    • 2020-05-10
    • 2021-08-07
    • 2016-11-17
    • 2016-08-14
    • 2021-03-05
    相关资源
    最近更新 更多