
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
On Thu, Dec 15, 2016 at 8:42 PM, Saurabh Nanda
wrote: * 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 associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net