Что произойдет, если я выброшу исключение из переданного делегата на подписку?
С помощью проверки исходного кода я обнаружил:
- < li>Субъекты будут игнорировать исключение.
- Операторы, производные от Producer (например, как Где) удаляют подписку по мере прохождения через них исключения.
Это заставляет меня усомниться в своем дизайне. Разве это плохая идея — создавать исключения для моих делегатов? Очевидно, команда RX так думает. (Хотя я сомневаюсь, что молчаливое избавление от «плохой» подписки — правильный путь.)
Однако, глядя на свой дизайн, я не понимаю, почему это проблема. У меня выполняются некоторые защищенные операции, я запускаю некоторые OnNext для уведомления слушателей (мы полностью перешли от событий старой школы .NET к Observables), если там что-то пойдет не так, он будет выбрасывать стек, пока не достигнет обработчика. . В моем случае обработчик откатывает транзакцию, над которой он работает, что также уведомляет слушателей об откате. Все безопасно, работает нормально. По крайней мере, он работает нормально без Dispose, происходящего в базе производителей оператора Where.
Идем немного дальше... разве это противоречиво, что субъект и одноранговые узлы не делают этого? такое поведение? А для наших собственных объектов ISubject и наблюдаемых операторов, которые мы здесь написали, следует ли нам использовать такое же поведение при удалении исключений?
Я с нетерпением жду любых идеи!
Подробнее здесь: https://stackoverflow.com/questions/193 ... r-an-obser