diff --git a/axum/src/docs/error_handling.md b/axum/src/docs/error_handling.md index 45c768c69a..d1b172b974 100644 --- a/axum/src/docs/error_handling.md +++ b/axum/src/docs/error_handling.md @@ -38,6 +38,16 @@ It doesn't matter whether you return `Err(StatusCode::NOT_FOUND)` or `Err(StatusCode::INTERNAL_SERVER_ERROR)`. These are not considered errors in axum. +Instead of a direct `StatusCode`, it makes sense to use intermediate error type +that can ultimately be converted to `Reponse`. This allows using `?` operator +in handlers. See those examples: + +* [`anyhow-error-response`][anyhow] for generic boxed errors +* [`error-handling-and-dependency-injection`][ehdi] for application-specific detailed errors + +[anyhow]:https://github.com/tokio-rs/axum/blob/main/examples/anyhow-error-response/src/main.rs +[ehdi]:https://github.com/tokio-rs/axum/blob/main/examples/error-handling-and-dependency-injection/src/main.rs + This also applies to extractors. If an extractor doesn't match the request the request will be rejected and a response will be returned without calling your handler. See [`extract`](crate::extract) to learn more about handling extractor diff --git a/axum/src/handler/mod.rs b/axum/src/handler/mod.rs index 338eea623c..d8546a1b71 100644 --- a/axum/src/handler/mod.rs +++ b/axum/src/handler/mod.rs @@ -32,6 +32,16 @@ //! } //! ``` //! +//! Instead of a direct `StatusCode`, it makes sense to use intermediate error type +//! that can ultimately be converted to `Reponse`. This allows using `?` operator +//! in handlers. See those examples: +//! +//! * [`anyhow-error-response`][anyhow] for generic boxed errors +//! * [`error-handling-and-dependency-injection`][ehdi] for application-specific detailed errors +//! +//! [anyhow]:https://github.com/tokio-rs/axum/blob/main/examples/anyhow-error-response/src/main.rs +//! [ehdi]:https://github.com/tokio-rs/axum/blob/main/examples/error-handling-and-dependency-injection/src/main.rs +//! #![doc = include_str!("../docs/debugging_handler_type_errors.md")] #[cfg(feature = "tokio")]