Add ex-message shim

This commit is contained in:
Tommi Reiman 2019-05-16 06:51:10 +03:00
parent ad0bc7e013
commit 7e7b57c913
2 changed files with 5 additions and 2 deletions

View file

@ -7,11 +7,14 @@
([type data] ([type data]
(throw (ex-info (str type) {:type type, :data data})))) (throw (ex-info (str type) {:type type, :data data}))))
(defn get-message [e]
#?(:clj (.getMessage ^Exception e) :cljs (ex-message e)))
(defmulti format-exception (fn [type _ _] type)) (defmulti format-exception (fn [type _ _] type))
(defn exception [e] (defn exception [e]
(let [data (ex-data e) (let [data (ex-data e)
message (format-exception (:type data) #?(:clj (.getMessage ^Exception e) :cljs (ex-message e)) (:data data))] message (format-exception (:type data) (get-message e) (:data data))]
;; there is a 3-arity version (+cause) of ex-info, but the default repl error message is taken from the cause ;; there is a 3-arity version (+cause) of ex-info, but the default repl error message is taken from the cause
(ex-info message (assoc (or data {}) ::cause e)))) (ex-info message (assoc (or data {}) ::cause e))))

View file

@ -350,7 +350,7 @@
[:span (color :grey "-- Exception ----------------------")] [:span (color :grey "-- Exception ----------------------")]
[:break] [:break]
[:break] [:break]
(color :red (ex-message exception)) (color :red (exception/get-message exception))
[:break] [:break]
[:break] [:break]
(edn left {:margin 3}) (edn left {:margin 3})