我在处理错误 Exception DIO包时遇到问题,我尝试在HTTP包中使用以下代码:
Future<List<Mosque>> getMahasiswaById(String id) async{
try {
var apiRespon = await http.get('$baseURL/mahasiswa/get/id/$id');
if(apiRespon.statusCode == 200){
final apiResponJson = json.decode(apiRespon.body);
return (apiResponJson['data'] as List).map((p)=>Mosque.fromJson(p)).toList();
}else{
print(apiRespon.statusCode.toString());
throw Exception('Failed Load Data with status code ${apiRespon.statusCode}');
}
}on Exception catch (e) {
print(e);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我用DIO进行更改,即使我已经在处理此异常,我的应用程序也会突然崩溃并出现错误异常:
Future<List<Mosque>> getMahasiswaById(String id) async{
try {
var apiRespon = await dio.get('$baseURL/mahasiswa/get/id/$id');
if(apiRespon.statusCode == 200){
final apiResponJson = apiRespon.data;
return (apiResponJson['data'] as List).map((p)=>Mosque.fromJson(p)).toList();
}else{
print(apiRespon.statusCode.toString());
throw Exception('Failed Load Data with status code ${apiRespon.statusCode}');
}
}on DioError catch (e) {
print(e);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我的例外:
错误:空
消息:“Http 状态错误 [404]”
响应({“status”:false,“message”:“未找到数据”})
我已经在 github 中打开了问题,但尚未得到解决方案。
谢谢
在您的第一个代码中,使用 http 包,如果状态代码不是 200,您将引发一个Exception由
on Exception catch (e) { ... }
Run Code Online (Sandbox Code Playgroud)
但是,在使用 DIO 包的第二个代码中,您引发了相同的问题Exception,但在更改捕获条件时无法捕获它
on DioError catch (e) { ... }
Run Code Online (Sandbox Code Playgroud)
由于异常并未由此引发,因此它会通过您的应用程序传播。
| 归档时间: |
|
| 查看次数: |
18737 次 |
| 最近记录: |