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

Reply via email to