Flutter-如何从飞镖期货中返回错误?

Kin*_*ics 10 future dart flutter

在我的flutter应用程序中,我有一个将来可以处理http请求并返回解码后的数据。但是我希望能够发送一个错误,如果status code != 200可以通过.catchError()处理程序得到。

继承人的未来:

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 
  }
}
Run Code Online (Sandbox Code Playgroud)

当我调用此函数时,我希望能够得到如下错误:

getEvents(customerID)
.then(
  ...
).catchError(
  (error) => print(error)
);
Run Code Online (Sandbox Code Playgroud)

Cop*_*oad 10

使用return,如果你想被抓住误差内catchError()

使用throw,如果你想在里面所捕获的错误try/catch

return Future.error("This is the error", StackTrace.fromString("This is its trace"));
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案 (2认同)

anm*_*ail 9

您可以使用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
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 我在`throw(“ some random error”);上发生了`Exception。 (2认同)
  • 好吧,那是意料之中的 (2认同)