【问题标题】:How to call on_error on a custom rxcpp operator如何在自定义 rxcpp 运算符上调用 on_error
【发布时间】:2017-01-26 15:13:27
【问题描述】:

我创建了一个简单的 rx 运算符,它将字符串流转换为 json 流,它工作正常。但是,我希望能够引发自定义异常,但我不确定如何调用订阅的on_error 方法

操作员称为convertStringToJson,可在此处找到工作示例:https://github.com/cipriancaba/rxcpp-examples/blob/master/src/SimpleOperators.cpp

function<observable<json>(observable<string>)> SimpleOperators::convertFromStringToJson() {
  return [](observable<string> $str) {
    return $str |
      Rx::map([](const string s) {
        return json::parse(s);
      });
  };
}

【问题讨论】:

    标签: c++ reactive-programming rxcpp


    【解决方案1】:

    如果您使用 try/catch 来翻译异常,rxcpp 将起作用。

    但是,预期的模式是使用 on_error_resume_next() 来转换异常。

    这是代码:

    function<observable<json>(observable<string>)> SimpleOperators::convertFromStringToJson() {
      return [](observable<string> $str) {
        return $str |
          Rx::map([](const string& s) {
              return json::parse(s);
          }) |
          Rx::on_error_resume_next([](std::exception_ptr){
            return Rx::error<json>(runtime_error("custom exception"));
          });
      };
    }
    

    我用这段代码在 github 上打开了一个拉取请求。

    https://github.com/cipriancaba/rxcpp-examples/pull/1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      相关资源
      最近更新 更多