flutter - 发生 Flutter Http 异常。_Exception(异常:加载数据失败)
问题描述
我想检查 Api Url Statuscode 是否为200,在else语句之前一切正常。
我收到了这个错误
Exception has occurred.
_Exception (Exception: Failed Load Data)
这是我的代码 API
Future<List<Mosque>> getMahasiswaById(String id) async {
var baseURL=Urls.BASE_API_URL;
var apiRespon = await http.get('$baseURL/mahasiswa/get/id/$id');
if(apiRespon.statusCode == 200) {
final apiResponJson = json.decode(apiRespon.body);
print(apiResponJson);
return (apiResponJson['data'] as List).map((p)=>Mosque.fromJson(p)).toList();
} else {
throw Exception('Failed Load Data');
}
}
我怎样才能解决这个问题 ?谢谢
解决方案
始终对 http 请求使用 try 和 catch 它将帮助您识别异常的来源,您可以执行以下操作:
Future<List<Mosque>> getMahasiswaById(String id) async{
var baseURL=Urls.BASE_API_URL;
try{
var apiRespon = await http.get('$baseURL/mahasiswa/get/id/$id');
if(apiRespon.statusCode == 200){
final apiResponJson = json.decode(apiRespon.body);
print(apiResponJson);
return (apiResponJson['data'] as List).map((p)=>Mosque.fromJson(p)).toList();
}
else {
print(apiReson.statusCode.toString());
throw Exception('Failed load data with status code ${apiReson.statusCode}');
}
catch(e){
print (e);
throw e;}
}
大多数情况下,异常来自糟糕的互联网连接、后端问题或互联网连接丢失,当您使用上述代码时,它会打印出异常的类型,以便您识别错误的根源。我希望能有所帮助
推荐阅读
- filebeat - 如何使用 filebeat 处理重叠日志?
- apache-spark - org.apache.spark.SparkException:无法初始化类 com.google.cloud.spark.bigquery.SparkBigQueryConnectorUserAgentProvider
- kubernetes - 如何在属于另一个命名空间的部署 yaml 中指定 serviceAccount(在默认命名空间中创建)
- c++ - Windows C/C++SOCKET 编程:在 2 个独立进程之间共享套接字
- c# - 如何将引用程序集的引用添加到项目中
- powerbi - 没有完全匹配的查找表(找到大于的第一个值)
- qml - 一个函数说它需要 -const QString &program- 作为参数,我应该输入什么?
- dataset - 是否可以将具有不同观察次数的两个数据集添加在一起?
- java - 使用 ORDER BY 查询以对端点中的值进行排序
- java - java.text.ParseException:无法解析的日期:“2/9/2016 10:30:00 AM (GMT-05:00) 东部时间(美国和加拿大)”