[Haskell-cafe] Absolutely confused with error/exception handling
saurabhnanda at gmail.com
Fri Dec 16 03:30:16 UTC 2016
Thanks. The air is clearing up a bit.
Any reason for "error" and "catch" to be in different packages? Or, why
isn't "catch" in prelude?
"catch" needs a action in IO. What if I have an action in MonadIO?
On 16 Dec 2016 8:00 am, "Brandon Allbery" <allbery.b at gmail.com> wrote:
> whoops, pressed wrong key...
> No guarantees are made as to when the exception thrown by `throw` occurs;
> this allows it to be thrown from pure code. `throwIO` is sequenced as any
> other I/O operation, so you have some guarantee as to I/O operations before
> the `throwIO` being performed.
> On Thu, Dec 15, 2016 at 9:28 PM, Brandon Allbery <allbery.b at gmail.com>
>> On Thu, Dec 15, 2016 at 8:42 PM, Saurabh Nanda <saurabhnanda at gmail.com>
>>> * What exactly is done by the "error" function? How does one "trap"
>>> those errors and react to it? Can "catch" trap those errors? What is "e" in
>>> the case of errors raised by "error"?
>> `error` specifically raises a UserError exception, with a user-specified
>> payload (message). `catch` can catch them as such.
>>> * How is "error" different from "throw" and "throwIO" (in the
>>> Control.Exception package, I believe)
>> `throw` (for pure code / asynchronous) and `throwIO` (for code in IO) can
>> throw any exception. No guarantees are made as to when the exception thrown
>> by `throw`
>> brandon s allbery kf8nh sine nomine
>> allbery.b at gmail.com
>> ballbery at sinenomine.net
>> unix, openafs, kerberos, infrastructure, xmonad
> brandon s allbery kf8nh sine nomine
> allbery.b at gmail.com
> ballbery at sinenomine.net
> unix, openafs, kerberos, infrastructure, xmonad
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe