J'essaie d'exécuter une fonction plusieurs fois avant d'abandonner sur des exceptions. Mais il n'est pas valable en Clojure de récurrer à partir du bloc catch. Comment cela peut-il être réalisé ?
(loop [tries 10]
(try
(might-throw-exception)
(catch Exception e
(when (pos? tries) (recur (dec tries))))))
java.lang.UnsupportedOperationException: Cannot recur from catch/finally
Le mieux que j'ai pu trouver est la solution maladroite suivante (envelopper dans un func et l'appeler)
(defn do-it []
(try
(might-throw-exception)
(catch Exception e nil)))
(loop [times 10]
(when (and (nil? (do-it)) (pos? times))
(recur (dec times))))