Catch exceptions that match a given Prism (or any Getter, really).
catching :: MonadError e m => Prism' e a -> m r -> (a -> m r) -> m r
catching :: MonadError e m => Lens' e a -> m r -> (a -> m r) -> m r
catching :: MonadError e m => Traversal' e a -> m r -> (a -> m r) -> m r
catching :: MonadError e m => Iso' e a -> m r -> (a -> m r) -> m r
catching :: MonadError e m => Getter e a -> m r -> (a -> m r) -> m r
catching :: MonadError e m => Fold e a -> m r -> (a -> m r) -> m r