Ответ 1
Это то же самое, что и в 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" и "нулевые или одно окончательные предложения" как часть try
выражение.