You want this on every single fn you define? in this case, yes you would
need a tweaked 'defn' form...something like this perhaps:
(defmacro defn-capt [name [& args] & code]
`(defn ~name [~@args]
(try ~@code
(catch Exception e# {:exception e#
:origin ~name
I'm so sorry... this one works!
(defmacro capture-inputs [f & args]
`(try (~f ~@args)
(catch Exception e# (do (println "oops!") {:e e# :inputs (vector
~@args)}
Jim
On 04/09/12 12:23, Jim - FooBar(); wrote:
oops gensym mistake!
(defmacro capture-inputs [f & args]
`(try (apply ~f ~@ar
oops gensym mistake!
(defmacro capture-inputs [f & args]
`(try (apply ~f ~@args)
(catch Exception e# (do (println "oops!") {:e e# :inputs (vec
~args)}
Jim
On 04/09/12 12:20, Jim - FooBar(); wrote:
you want the exception thrown to report the arguments or 'capture
them' (as you say)
you want the exception thrown to report the arguments or 'capture them'
(as you say) in the actual Exception object so you can use them outside
the try-catch scope? the former is very straight forward you just use
your arguments...the latter is more fuss as you have to gen-class your
own except
Slingshot's throw+ generates an exception object that includes, among other
things, all the locals in the context of your throw.
On Monday, September 3, 2012 9:03:42 PM UTC-7, Timothy Pratley wrote:
>
> I'm working on a project where it would be quite convenient to have the
> input values to the
I'm working on a project where it would be quite convenient to have the
input values to the function reported in any exceptions that get thrown.
I'm guessing the way to do this would be to create a replacement defn which
had a try catch and threw a new error with the inputs captured. Has anyone