Difference between catch: and subscribeError:

99封情书 提交于 2019-12-03 04:00:41

问题


In ReactiveCocoa, what's the difference between the subscribeError: method vs. catch:? Why would you want to return a signal in catch:?


回答1:


-subscribeError: actually subscribes: this is the end of the line. Whereas -catch: simply transforms a signal into a new signal (and doesn't actually subscribe). Think of the signal like a program. When you -subscribeError:, you are telling the computer "I want to run this program, but I only want to hear back from you if it errors out." When you -catch:, you are saying "I've got this program that may throw an error, and I want to make a new one based on the old one that handles that error differently."

The reason you have to return a signal in -catch: is that it is not simply for squelching errors: it is actually for responding to errors. Once the original signal has errored out, it's as good as gone: if you want the resultant signal to keep going after a failure, you have to do give a new signal in -catch:.

Examples of what you could do in -catch::

  1. Return [RACSignal empty] if you want to fail silently and not throw an error.
  2. Return [RACSignal error:err] if you want to rethrow the error after doing something, or perhaps you want to transform the error.
  3. Return some other signal that you want to subscribe to in case the first one errors out.


来源:https://stackoverflow.com/questions/19439636/difference-between-catch-and-subscribeerror

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!