Translate

sábado, 13 de marzo de 2021

Primeros pasos con Clojure, parte 31

 Seguimos con Clojure... 


Clojure provee manejo de excepciones como Java (try/catch/finally), veamos un ejemplo : 

(try

  (/ 2 1)

  (catch ArithmeticException e

    "divide by zero")

  (finally

    (println "cleanup")))


Tambien podemos lanzar excepciones: 


(try

  (throw (Exception. "something went wrong"))

  (catch Exception e (.getMessage e)))


Clojure provee información extra con : 

  • ex-info toma un mensaje y un mapa y genera una excepción
  • ex-data recupera el mapa generado por ex-info

Veamos un ejemplo : 

(try

  (throw (ex-info "There was a problem" {:detail 42}))

  (catch Exception e

    (prn (:detail (ex-data e)))))