# Recovery Combinators — catch and Friends
The current `Effect` recovery surface works with typed errors `E`. `Cause<E>` appears in `Exit` and fibers, not in ordinary `catch` handlers.
## catch
`catch` handles a typed failure by returning another effect.
```rust,ignore
DbError::NotFound => succeed(User::anonymous()),
other => fail(other),
}
});
```
Use `catch` when recovery itself may still fail.
## catch_all
`catch_all` maps any typed error into a fallback success value. The returned effect is infallible through `E`.
```rust,ignore
## map_error
Use `map_error` to translate errors into your application error type.
```rust,ignore
let effect = db_call().map_error(AppError::Database);
```
## Not Present Yet
The current API does not include `fold`, `or_else`, or `ignore_error` methods on `Effect`. Use `catch`, `catch_all`, `map`, and `map_error`, or pattern match on `run_blocking(effect, env)` at a boundary.