这是我的例外类.异常类已由Ffltter的抽象异常类实现.我是不是遗漏了什么?

class FetchDataException implements Exception {
 final _message;
 FetchDataException([this._message]);

String toString() {
if (_message == null) return "Exception";
  return "Exception: $_message";
 }
}


void loginUser(String email, String password) {
  _data
    .userLogin(email, password)
    .then((user) => _view.onLoginComplete(user))
    .catchError((onError) => {
       print('error caught');
       _view.onLoginError();
    });
}

Future < User > userLogin(email, password) async {
  Map body = {
    'username': email,
    'password': password
  };
  http.Response response = await http.post(apiUrl, body: body);
  final responseBody = json.decode(response.body);
  final statusCode = response.statusCode;
  if (statusCode != HTTP_200_OK || responseBody == null) {
    throw new FetchDataException(
      "An error occured : [Status Code : $statusCode]");
   }
  return new User.fromMap(responseBody);
}

当状态不是200时,CatchError不捕获错误.简而言之,不打印捕获的错误.

推荐答案

try

void loginUser(String email, String password) async {
  try {
    var user = await _data
      .userLogin(email, password);
    _view.onLoginComplete(user);
      });
  } on FetchDataException catch(e) {
    print('error caught: $e');
    _view.onLoginError();
  }
}

catchError有时要做对有点棘手. 在async/await中,您可以使用try/catch,就像同步代码一样,而且通常更容易正确.

Flutter相关问答推荐

关闭视频通话,相机仍在运行!(Flutter WebRTC)

为什么我需要等待重新访问Firestore数据库,即使它已经做了之前?

build_runner显示错误没有为类ClassDeclaration定义getter宏关键字'

功能不起作用的Flutter 块复制

修复后期变量的抖动皮棉

如何使用Dio/Ffltter(前端)和amp;Go(后端)向API发送正确的请求

FOR回路中的Flutter 模型

Flutter 日期时间格式

尽管 onCollision 处理了我的角色还是从平台上掉了下来

'type' Icon '不是类型' IconData '的子类型

为什么 appBar 小部件在 flutter 中不是常量

通过点击缩略图加载全屏图像

更改文本字段Flutter 中最大字母的 colored颜色

如何防止卡子在底部溢出?

如何在 tabBar 中的选项卡之间制作垂直线?

在flutter web中重新加载页面时保留一些状态数据的有效方法是什么?

将容器扩展到安全区域 - Flutter

在另一个页面编辑数据后更新 Flutter 页面的惯用方法?

Flutter 小部件中的视图和逻辑分离

从 Uint8List 或图像对象创建 InputImageData 用于 Google ML Kit 人脸检测