Exception 在Dart中管理登录/功能错误的最佳实践是什么?

Exception 在Dart中管理登录/功能错误的最佳实践是什么?,exception,error-handling,dart,flutter,Exception,Error Handling,Dart,Flutter,错误和异常在Dart中可用 假设我使用RESTAPI进行登录,我需要如何管理登录函数 Future<bool>login(String email,String password) async Futurelogin(字符串电子邮件、字符串密码)异步 如果API返回200 OK: 简单地返回true 其他建议 如果API HTTP错误401/未经授权的500/服务器错误或网络错误(超时或不可用),返回什么 例外 错误 false(但应用程序屏幕上显示的消息是什么?) 在Da

错误和异常在Dart中可用

假设我使用RESTAPI进行登录,我需要如何管理登录函数

Future<bool>login(String email,String password) async
Futurelogin(字符串电子邮件、字符串密码)异步
如果API返回200 OK:

  • 简单地返回true
  • 其他建议
如果API HTTP错误401/未经授权的500/服务器错误或网络错误(超时或不可用),返回什么

  • 例外

  • 错误

  • false(但应用程序屏幕上显示的消息是什么?)


在Dart/FLUTER中实现这一点的最好也是最常见的方法是创建一个自定义异常类,并在需要时抛出和捕获它们

我建议您这样设置代码

class CustomException implements Exception {
  String message;
  CustomException(this.message);
}

Future<bool>login(String email,String password) async {
  try {
    //Throwing an Exception if something goes wrong
    throw CustomException('This is my first custom exception');
  } on CustomException {
    //Catching and handling the exception if it is thrown
    //You could throw up a snackbar or a dialog here as well
    print("Error handling");
  }
}
类CustomException实现异常{
字符串消息;
CustomException(this.message);
}
Futurelogin(字符串电子邮件、字符串密码)异步{
试一试{
//如果出现问题,则抛出异常
抛出CustomException('这是我的第一个自定义异常');
}论海关例外{
//捕获并处理抛出的异常
//你也可以在这里弹出一个小吃条或对话框
打印(“错误处理”);
}
}

此外,您使用的http库可能也有一些内置的错误处理

是否可以安装http响应拦截器,以便一般地处理此类处理,尤其是401(会话到期)和5xx响应?这似乎不是最好的方法。这样,您就不知道服务器返回的错误代码是什么。