async-graphql/docs/zh-CN/src/error_handling.md
2020-05-13 12:49:43 +08:00

688 B
Raw Blame History

错误处理

Resolver函数可以返回一个FieldResult类型以下是FieldResult的定义

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

任何错误都能够被转换为FieldError,并且你还能扩展标准的错误信息。

下面是一个例子,解析一个输入的字符串到整数,当解析失败时返回错误,并且附加额外的错误信息。

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| err.extend_with(|_| json!({"code": 400})))?)
    }
}