`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.