如何在自定义rxcpp运算符上调用on_error

时间:2017-01-26 15:13:27

标签: c++ reactive-programming rxcpp

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

运营商名为on_error,可在此处找到工作样本:https://github.com/cipriancaba/rxcpp-examples/blob/master/src/SimpleOperators.cpp

convertStringToJson

1 个答案:

答案 0 :(得分:3)

如果你使用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上打开了一个pull请求。

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