2012-06-04 20 views
12

Mi código Clojure tiene algo de interoperabilidad java con un método que arroja múltiples excepciones. Deseo tratar con cada individuo de ellos. De acuerdo con la documentación de Clojure:¿Cómo atrapar múltiples excepciones en Clojure?

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

no tiene mención de atrapar varias excepciones. ¿Es posible hacerlo en Clojure?

Gracias!

Respuesta

23

Es el mismo que en Java, se puede declarar varias expresiones catch uno detrás de otro, y que van a conseguir emparejado en el mismo orden en que fueron declarados - Exception1 primero, si no coincide entonces Exception2 etc. , y la parte finally siempre se ejecutará.

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

De hecho, esto se especifica en la documentación, (try expr* catch-clause* finally-clause?) significa que se puede tener "cero o más expresiones", "cláusulas o más capturas cero" y "cero o uno, finalmente, las cláusulas" como parte de un try expresión.

+1

gracias, debería haber prestado atención a la cláusula de captura Star jaja .. –

+1

La buena ol '[estrella Kleene] (http://en.wikipedia.org/wiki/Kleene_star), nunca me decepciona:) –

Cuestiones relacionadas