2020-04-15 03:15:30 +00:00
|
|
|
|
# 错误处理
|
2020-04-16 03:06:09 +00:00
|
|
|
|
|
2020-04-16 07:09:09 +00:00
|
|
|
|
Resolve函数可以返回一个FieldResult类型,以下是FieldResult的定义:
|
|
|
|
|
|
|
|
|
|
```rust
|
|
|
|
|
type FieldResult<T> = std::result::Result<T, FieldError>;
|
|
|
|
|
```
|
|
|
|
|
|
2020-05-10 05:48:41 +00:00
|
|
|
|
任何错误都能够被转换为`FieldError`,并且你还能扩展标准的错误信息。
|
2020-04-16 03:06:09 +00:00
|
|
|
|
|
|
|
|
|
下面是一个例子,解析一个输入的字符串到整数,当解析失败时返回错误,并且附加额外的错误信息。
|
|
|
|
|
|
|
|
|
|
```rust
|
2020-04-16 07:09:09 +00:00
|
|
|
|
use async_graphql::*;
|
|
|
|
|
|
2020-04-16 03:06:09 +00:00
|
|
|
|
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})))?)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|