Hi, On Jan 25, 12:41 pm, Manish <manish.zed...@gmail.com> wrote:
> I am new to clojure. I want to use try-catch block to the (.getPage > *wc* ~url) statement of code. But I am getting this error: > java.lang.Exception: Can't bind qualified name:nlplabs.webfetch.agent/ > exception > > Would u pls help me to sort out this problem? > > Thanx in advance > > Code snippet: > (ns nlplabs.webfetch.agent) > > (def *page* nil) > > (defmacro with-page [url & forms] > `(binding [*page* (wrap (log :info "Fetching page at URL " ~url) > (try > (.getPage *wc* ~url) > (catch Exception exception > (println exception) > (.clear exception))) > (log :info "Done fetching page at URL " > ~url)) > *page-dom* (page-dom-fn)] > �...@forms)) To avoid variable capture you have to gensym variable names. Luckily Clojure has a short-cut for this: symbols ending in #. You should also make a habit of not evaluating code multiple times in a macro. This can lead to very subtle bugs. Try the following: (defmacro with-page [url & forms] `(let [url# ~url] (binding [*page* (wrap (log :info "Fetching page at URL " url#) (try (.getPage *wc* url#) (catch Exception exception# (println exception#) (.clear exception#))) (log :info "Done fetching page at URL " url#)) *page-dom* (page-dom-fn)] ~...@forms))) Sincerely Meikel -- 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