这可能是一个菜鸟问题,但是如果用户没有互联网连接或者获取数据的时间太长,如何使我的响应抛出异常?
Future<TransactionModel> getDetailedTransaction(String crypto) async {
//TODO Make it return an error if there is no internet or takes too long!
http.Response response = await http.get(crypto);
return parsedJson(response);
}
您应该用try catch块将其包围,如下所示:
import 'package:http/http.dart' as http;
int timeout = 5;
try {
http.Response response = await http.get('someUrl').
timeout(Duration(seconds: timeout));
if (response.statusCode == 200) {
// do something
} else {
// handle it
}
} on TimeoutException catch (e) {
print('Timeout Error: $e');
} on SocketException catch (e) {
print('Socket Error: $e');
} on Error catch (e) {
print('General Error: $e');
}
如果电话知道没有连接(例如,WiFi和数据连接均已关闭),则会立即引发套接字异常。
给定的超时时间后,将引发超时异常,例如服务器回复时间过长或用户连接非常差等。
另外,如果响应代码不是= 200,也不要忘记处理这种情况。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句