私のフラッターアプリには、httpリクエストを処理し、デコードされたデータを返すfutureがあります。しかし、.catchError()
ハンドラーで取得できるstatus code != 200
がある場合にエラーを送信できるようにしたいと思います。
未来が見える:
Future<List> getEvents(String customerID) async {
var response = await http.get(
Uri.encodeFull(...)
);
if (response.statusCode == 200){
return jsonDecode(response.body);
}else{
// I want to return error here
}
}
この関数を呼び出すと、次のようなエラーが発生するようにしたいと思います。
getEvents(customerID)
.then(
...
).catchError(
(error) => print(error)
);
throw
を使用できます。
Future<List> getEvents(String customerID) async {
var response = await http.get(
Uri.encodeFull(...)
);
if (response.statusCode == 200){
return jsonDecode(response.body);
}else{
// I want to return error here
throw("some arbitrary error"); // error thrown
}
}
エラーをcatchError()
内でキャッチするには、return
を使用します
エラーをtry/catch
内でキャッチするには、throw
を使用します。
return Future.error("This is the error", StackTrace.fromString("This is its trace"));