Hello, I made a small macro, if anyone is interested. https://gist.github.com/1209498
It wraps one or more forms and if an exception is thrown, prints the form that caused it, and throws the exception itself. Examples: user=> (trace-forms 3) 3 user=> (trace-forms (+ 6 (/ 9 0))) java.lang.ArithmeticException: Divide by zero (NO_SOURCE_FILE:9) Form failed: (/ 9 0) Form failed: (+ 6 (/ 9 0)) user=> (trace-forms (let [a 0 b (/ 9 a)] b)) java.lang.ArithmeticException: Divide by zero (NO_SOURCE_FILE:75) Form failed: (/ 9 a) Form failed: (let* [a 0 b (/ 9 a)] b) Form failed: (let [a 0 b (/ 9 a)] b) Issues: user=> (trace-forms (let [b (/ 9 a)] b)) java.lang.Exception: Unable to resolve symbol: a in this context (NO_SOURCE_FILE:94) user=> (trace-forms (let [a (java.lang.DoesNotExist.)] a)) java.lang.ClassNotFoundException: java.lang.DoesNotExist (NO_SOURCE_FILE:93) ---- Thoughts? Jonathan -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en