flutter - dart 是调用函数的重新抛出异常
问题描述
我有两节课,第一节课AppModel
是AppViewModel
AppModel
有一个方法可以做一些api操作并根据状态返回值。
AppViewModel
有一个调用appModel
对象方法来做api请求的方法。
AppModel
的方法代码是:
try {
final response = await apicall();
if (response.statusCode != 200)
return Resource.error(jsonDecode(response.error)['message']);
return Resource.success(
ProductDetails.fromJson(jsonDecode(response.body)).productData);
} catch (error, stackTrace) {
print('Exception occurred: $error stackTrace: $stackTrace');
return Resource.error(error);
}
问题是当引发错误时,按预期调用 catch 方法,它应该向调用返回一个值,但错误也被抛出给AppViewModel
函数并导致an exception is not handled
错误。
如何防止AppModel
函数向函数抛出错误AppViewModel
,而是返回指定的值。
类Resource
代码是:
class Resource<T> {
Resource({@required this.status, this.data, this.message});
String message;
Status status;
T data;
factory Resource.success(T data) =>
Resource(status: Status.SUCCESS, data: data);
factory Resource.error(String msg) =>
Resource(status: Status.ERROR, message: msg);
factory Resource.loading() =>
Resource(status: Status.LOADING);
}
解决方案
推荐阅读
- c# - 曼哈顿旅游问题的对角线计算
- jquery - jQuery | 点击功能在 Firefox 中不起作用,但在 Chrome 中起作用
- python - Python,如果用户过早关闭命令提示符,如何关闭 Excel 工作簿?
- python - 如何使用 django 呈现未模板化的 html
- angular - 角度测试:在组件构造函数中订阅服务是未定义的
- android - 当屏幕方向从纵向到横向时,如何将数据保留在回收站视图中?
- javascript - Ionic Cordova 相机:损坏/黑色 Base64 图像
- node.js - 如何将 S3 托管的前端连接到 Elastic beanstalk 托管的后端?
- r - 如何获得具有交互作用的非线性混合模型(逻辑增长曲线)的置信区间
- unix - Tokio FramedRead.for_each 无限期地调用单个响应