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

29 lines
788 B
Markdown
Raw Normal View History

2020-04-15 03:15:30 +00:00
# Error handling
Resolve can return a `FieldResult`, following is the definition:
```rust
type FieldResult<T> = std::result::Result<T, FieldError>;
```
2020-05-11 12:22:20 +00:00
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.
2020-05-11 12:22:20 +00:00
See [ErrorExtensions](error_extensions.md) sections of this book for more details.
```rust
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})))?)
}
}
2020-05-11 12:22:20 +00:00
```