Thank you so much. I was always confused by what exception should I catch. On Thu, Jan 12, 2012 at 3:49 PM, Gregory Crosswhite <gcrosswh...@gmail.com> wrote: > On 01/12/12 16:58, Magicloud Magiclouds wrote: >> Yes, that is a problem. But consider my PS in original mail, I have no >> idea what exception should I catch. Where could I get that >> information? > > In my experience, exceptions fall into three categories. > > First, when performing IO, some functions throw an exception instead of > returning an error code, as is the case for many of the functions in > System.IO; however, in these cases the exceptions that can be thrown > are clearly documented. > > Second, when a bug in your code has caused it to reach a point where it > can no longer proceed, such as when there is a deadlock, when there is > an infinite loop, when you violated a precondition of a pure function by > for example calling "head" on an empty list, etc.; in such cases it is > very unlikely that you would even want to catch and gracefully recover > from them, so an exception specification would not help you very much > anyway. > > Third, when you are running someone else's code and you want to be able > to catch any exceptions it throws so that you can handle the error > reporting yourself; in this case the only thing that you care about is > whether the exception is an AsyncException or not, since if it is an > AsyncException then you should almost certainly should just let it > propagate up the call stack rather than dealing with it yourself. > > Incidentally, in all of these cases catching *all* exceptions is a bad > idea unless you really know what you are doing for the reasons that > others here have pointed out, so I apologize for misleading you with > that suggestion. > > Cheers, > Greg
-- 竹密岂妨流水过 山高哪阻野云飞 _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe