Handling exceptions or gracefully releasing resources

`Control.Exception.bracket` is a nice function to acquire and release a resource in a small context. But, how should I handle resources that are hold for a long time? Should I put `Control.Exception.finally` on every single line of my finalizers? What exceptions may occur on an IO operation? Every IO function has the risk of throwing an exception? Thanks, Thiago.

Hi,
The pattern is essentially the same as in imperative languages; every
allocation should involve a finally clause that deallocates the
resource.
On Tue, Jan 29, 2013 at 2:59 PM, Thiago Negri
Should I put `Control.Exception.finally` on every single line of my finalizers?
I'm not sure what you're asking here. If your finally clause tries to call close, you don't have to catch exceptions raise by close (what would you do with them anyway).

Everything that Johan Tibell said + you may be interested in the
resourcet package [1] (which is used by conduit to handle resources).
Cheers,
[1] http://hackage.haskell.org/package/resourcet
On Tue, Jan 29, 2013 at 8:59 PM, Thiago Negri
`Control.Exception.bracket` is a nice function to acquire and release a resource in a small context.
But, how should I handle resources that are hold for a long time?
Should I put `Control.Exception.finally` on every single line of my finalizers? What exceptions may occur on an IO operation? Every IO function has the risk of throwing an exception?
Thanks, Thiago.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Felipe.

Felipe, I'm trying to use your Hipmunk package. :)
The resources I need to keep around are the objects used for the simulation.
Do you recomend using "resourcet" to handle this or something else?
Thanks.
2013/1/30 Felipe Almeida Lessa
Everything that Johan Tibell said + you may be interested in the resourcet package [1] (which is used by conduit to handle resources).
Cheers,
[1] http://hackage.haskell.org/package/resourcet
On Tue, Jan 29, 2013 at 8:59 PM, Thiago Negri
wrote: `Control.Exception.bracket` is a nice function to acquire and release a resource in a small context.
But, how should I handle resources that are hold for a long time?
Should I put `Control.Exception.finally` on every single line of my finalizers? What exceptions may occur on an IO operation? Every IO function has the risk of throwing an exception?
Thanks, Thiago.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Felipe.

AFAIR, the only object that you need to be careful with is the Space
[1], everything else is garbage collected. You could put the Space in
a ResourceT, but only if it ran on its own thread (as soon as a block
of ResourceT finishes, everything is deallocated, so you wouldn't be
able to follow the approach taken by HipmunkPlayground).
Cheers,
[1] http://hackage.haskell.org/packages/archive/Hipmunk/5.2.0.10/doc/html/Physic...
On Wed, Jan 30, 2013 at 11:15 AM, Thiago Negri
Felipe, I'm trying to use your Hipmunk package. :) The resources I need to keep around are the objects used for the simulation. Do you recomend using "resourcet" to handle this or something else?
Thanks.
2013/1/30 Felipe Almeida Lessa
Everything that Johan Tibell said + you may be interested in the resourcet package [1] (which is used by conduit to handle resources).
Cheers,
[1] http://hackage.haskell.org/package/resourcet
On Tue, Jan 29, 2013 at 8:59 PM, Thiago Negri
wrote: `Control.Exception.bracket` is a nice function to acquire and release a resource in a small context.
But, how should I handle resources that are hold for a long time?
Should I put `Control.Exception.finally` on every single line of my finalizers? What exceptions may occur on an IO operation? Every IO function has the risk of throwing an exception?
Thanks, Thiago.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- Felipe.
-- Felipe.
participants (3)
-
Felipe Almeida Lessa
-
Johan Tibell
-
Thiago Negri