async-graphql/docs/en/src/error_handling.md

788 B

Error handling

Resolve can return a FieldResult, following is the definition:

type FieldResult<T> = std::result::Result<T, FieldError>;

Any Error that implements std::fmt::Display can be converted to FieldError and you can extend error message.

Following example shows how to parse an input string to integer. When parsing failed, it would return error and attach error message. See ErrorExtensions sections of this book for more details.

use async_graphql::*;

struct Query;

#[Object]
impl Query {
    #[field]
    async fn parse_with_extensions(&self, input: String) -> FieldResult<i32> {
        Ok("234a"
            .parse()
            .map_err(|err: ParseIntError| err.extend_with(|_| json!({"code": 400})))?)
    }
}