Gestion des erreurs

De la même façon que sa plateforme hôte, la gestion des erreurs en Clojure se base sur des exceptions.

Une exception peut être capturée via un block try-catch terminé eventuellement d'un block finally. Une opération illégale où le mot clé throw lèvera une exception.

En Clojure sur la JVM, les exceptions sont des exceptions Java:

(try
  (/ 1 0)
  (catch ArithmeticException e
    (str e)))

Il est bien sûr possible d'enchaîner plusieurs catch, avec différents types d'exceptions:

(try
  (/ 1 0)
  (catch IndexOutOfBoundsException e
    (str e))
  (catch Exception e
    (str e)))

En ClojureScript (donc dans l'interpréteur à droite de la page), il est possible de throw tout type de valeurs (comme en JavaScript). La syntaxe catch :default permet de catch l'exception quelle que soit son type. Attention, cette syntaxe n'existe pas en Clojure sur la JVM.

Précédent - Suivant -

(try
  (throw (js/Error. "My exception"))
  (catch js/Error err
    (println "Caught " err))
  (finally
    (println "Finally block" "\n")))

(try
  (throw "My exception is a string !")
  (catch :default err
    (println "Caught a string: " err "\n")))

Powered by mcorbin - Available on Github