Hi,
On Jan 25, 12:41 pm, Manish <[email protected]> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en