首页 > 解决方案 > dart 是调用函数的重新抛出异常

问题描述

我有两节课,第一节课AppModelAppViewModel

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);

}

标签: flutterdartexception

解决方案


推荐阅读