ka <[email protected]> writes:
> How can I do something like ...
>
> (try
> (let [conn (API/getConnection ..)]
> (....))
> (catch ..)
> (finally (if conn (API/closeConnection conn))))
>
> Problem is that conn is unavailable in the finally context.
Why not just have two try blocks?
(try
(let [conn (API/getConnection ..)]
(try
(....)
(finally (API/closeConnection conn))))
(catch ...))
For these sorts of things I usually try to use with-open, or if
with-open is not applicable do my own similar macro:
(defmacro with-api-connection [conn-sym arg1 arg2 & body]
`(let [~conn-sym (API/getConnection ~arg1 ~arg2)]
(try
~...@body
(finally (API/closeConnection ~conn-sym)))))
So then you never forget to close the connection:
(try
(with-api-connection conn ...
(... do something with conn ...))
(catch ...))
--
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