Flutter BLoC:mapEventToState的全局异常处理程序

时间:2019-12-20 12:40:29

标签: flutter bloc flutter-bloc

我使用felangel的bloc库。我通过在mapEventToState方法中使用存储库来获取数据。如果存储库引发异常,我想将其捕获到全局异常处理程序中。

@override
Stream<MyState> mapEventToState(Event event) async* {
  if (event is MyEvent) {
    try {
      var data = await repository.fetchData();
      yield MyState(data);
    } catch (e) {
      //There may be many exceptions
    }
  }
}

有没有没有try-catch块的异常捕获方法,什么是最佳实践?

1 个答案:

答案 0 :(得分:-1)

您可以编写一个实用程序来管理错误。我为此写了一些东西。这可能是您的想法。

static String handleError(Error error) {
        String errorDescription = "";
        if (/*error is SomethingError*/) {
          switch (error.type) {
            case ErrorType.CANCEL:
              errorDescription = "ErrorType.CANCEL";
              break;
            case ErrorType.CONNECT_TIMEOUT:
              errorDescription = "ErrorType.CONNECT_TIMEOUT";
              break;
            case ErrorType.DEFAULT:
              errorDescription = "ErrorType.DEFAULT";
              break;
            case ErrorType.RECEIVE_TIMEOUT:
              errorDescription = "ErrorType.RECEIVE_TIMEOUT";
              break;
            case ErrorType.RESPONSE:
              switch (error.response.toString()) {
                case "usernamePasswordFail":
                  errorDescription = "usernamePasswordFail";
                  break;
                default:
                  errorDescription = "errorDescription";
 }, ${error.response.data ?? ''}";
                  break;
              }
              break;
            case ErrorType.SEND_TIMEOUT:
              errorDescription = "ErrorType.SEND_TIMEOUT";
              break;
          }
        } else {
          errorDescription = "somethingElseError";
        }
        return errorDescription;
      }