Most or at least many haskell packages went the way of using MonadThrow instead of typed Exceptions for IO code. See [Michael Snoyberg's essay](https://www.schoolofhaskell.com/user/commercial/content/exceptions-best-practices) for a rationale.