我正在开发一个使用http.request方法读取数据的应用程序。如果该设备处于联机状态,则一切正常,但如果该设备处于脱机状态,则该功能无法使用。
我的代码与此类似:
_fetchPost() async {
final response = await http.get('https://myUrl.com');
//if the device is offline it jumps all the code below
print("Hi"); //not printed
if (response.statusCode == 200) {
//do something
} else {
throw Exception('Failed to load'); //not throwed
}
}
答案 0 :(得分:0)
此行
final response = await http.get('https://myUrl.com');
如果失败将抛出异常。
在您的代码中,它假定响应成功,并返回http状态代码。 状态代码只能在http服务器出现错误时告诉您,而在连接出现错误时不会告诉您。拥有404状态代码意味着http服务器找不到您要查找的内容,但是没有表示已建立连接。
如果您查看抖动控制台,可能会发现unable to resolve host
行中的异常,考虑到您的设备无法访问互联网,这是有效的。
由于该行引发了未捕获的异常,因此逻辑上该方法的其余部分未执行。您可能应该将其包装在try catch子句中,以处理设备处于脱机状态的实例。