Catch exceptions that match a given Prism (or any Fold, really).
catching _AssertionFailed (assert False (return "uncaught")) $ \ _ -> return "caught""caught"
catching :: MonadCatch m => Prism' SomeException a -> m r -> (a -> m r) -> m r
catching :: MonadCatch m => Lens' SomeException a -> m r -> (a -> m r) -> m r
catching :: MonadCatch m => Traversal' SomeException a -> m r -> (a -> m r) -> m r
catching :: MonadCatch m => Iso' SomeException a -> m r -> (a -> m r) -> m r
catching :: MonadCatch m => Getter SomeException a -> m r -> (a -> m r) -> m r
catching :: MonadCatch m => Fold SomeException a -> m r -> (a -> m r) -> m r