The following code doesn't catch the exception thrown like I think it
should.  Any recommendations appreciated.

https://gist.github.com/793340

Thank you,
Ryan

- - - -

(ns my-ns
  (:use [clj-time.core :only [date-time]]))

(defn my-date-time
  "same as clj-time.core date-time but returns nil on improper input"
  [& args]
  (try
    (apply date-time (map #(Integer/parseInt %) args))
    (catch NumberFormatException e "hi")))

; works
(println (my-date-time "2011" "01" "01"))

; errors out but should be caught in try/catch
(println (my-date-time "2011" "asdf" "01"))


- - - - output


#<DateTime 2011-01-01T00:00:00.000Z>
Exception in thread "main" java.lang.RuntimeException:
java.lang.NumberFormatException: For input string: "asdf" (temp.clj:0)
        at clojure.lang.Compiler.eval(Compiler.java:5440)
        at clojure.lang.Compiler.load(Compiler.java:5857)
        at clojure.lang.Compiler.loadFile(Compiler.java:5820)
        at clojure.main$load_script.invoke(main.clj:221)
        at clojure.main$script_opt.invoke(main.clj:273)
        at clojure.main$main.doInvoke(main.clj:354)
        at clojure.lang.RestFn.invoke(RestFn.java:437)
        at clojure.lang.Var.invoke(Var.java:373)
        at clojure.lang.AFn.applyToHelper(AFn.java:169)
        at clojure.lang.Var.applyTo(Var.java:482)
        at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException:
java.lang.NumberFormatException: For input string: "asdf"
        at clojure.lang.LazySeq.sval(LazySeq.java:47)
        at clojure.lang.LazySeq.seq(LazySeq.java:56)
        at clojure.lang.Cons.next(Cons.java:39)
        at clojure.lang.RT.boundedLength(RT.java:1186)
        at clojure.lang.AFn.applyToHelper(AFn.java:155)
        at clojure.lang.AFn.applyTo(AFn.java:151)
        at clojure.core$apply.invoke(core.clj:540)
        at my_ns$my_date_time.doInvoke(temp.clj:8)
        at clojure.lang.RestFn.invoke(RestFn.java:437)
        at my_ns$eval64.invoke(temp.clj:13)
        at clojure.lang.Compiler.eval(Compiler.java:5424)
        ... 10 more
Caused by: java.lang.NumberFormatException: For input string: "asdf"
        at 
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:449)
        at java.lang.Integer.parseInt(Integer.java:499)
        at my_ns$my_date_time$fn__59.invoke(temp.clj:8)
        at clojure.core$map$fn__3695.invoke(core.clj:2096)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        ... 20 more

-- 
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

Reply via email to