--- title: All About Exceptions author: Michael Snoyman description: All of the necessary information to understand exceptions first-written: 2015-02-24 last-updated: 2015-02-24 last-reviewed: 2015-02-24 --- Should cover: * Throwing exceptions * Catching exceptions * Exceptions in pure code * Difference between `throw` and `throwIO` * Async exceptions * Catching all exceptions * http://www.yesodweb.com/blog/2014/05/exceptions-cont-monads * https://www.fpcomplete.com/user/snoyberg/general-haskell/exceptions/exceptions-and-monad-transformers * https://www.fpcomplete.com/user/snoyberg/general-haskell/exceptions/catching-all-exceptions * Exceptions problems. Can't wrap. Can't have two exceptions. No idea how exception was thrown. * [Wrap exceptions to provide context](http://stackoverflow.com/questions/27346380/how-to-wrap-exceptions-to-provide-context) * [General dislike of exceptions](http://www.reddit.com/r/haskell/comments/2ety9f/new_blog_post_dealing_with_asynchronous/ck3fkbp) * enclosed-exceptions * Examples of code-conversion between all possible error styles * unexceptionalio and errors libraries