My Clojure code has some java-interop with a method that throws multiple exceptions. I wish to deal with each individual of them. According to Clojure documentation:
<
It's the same as in Java, you can declare several catch
expressions one after the other, and they'll get matched in the same order they were declared - first Exception1
, if it doesn't match then Exception2
and so on, and the finally
part will always be executed.
(try
(catch Exception1 e1 (prn "in catch1"))
(catch Exception2 e2 (prn "in catch2"))
(finally (prn "in finally")))
In fact, this is specified in the documentation, (try expr* catch-clause* finally-clause?)
means that you can have "zero or more expressions", "zero or more catch clauses" and "zero or one finally clauses" as part of a try
expression.