3

我创建了一个简单的 rx 运算符,它将字符串流转换为 jsons 流,它工作正常。但是,我希望能够引发自定义异常,但我不确定如何调用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);
      });
  };
}
4

1 回答 1

4

如果您使用 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

于 2017-01-27T16:02:05.487 回答