Book Image

C++ Reactive Programming

By : Praseed Pai, Peter Abraham
Book Image

C++ Reactive Programming

By: Praseed Pai, Peter Abraham

Overview of this book

Reactive programming is an effective way to build highly responsive applications with an easy-to-maintain code base. This book covers the essential functional reactive concepts that will help you build highly concurrent, event-driven, and asynchronous applications in a simpler and less error-prone way. C++ Reactive Programming begins with a discussion on how event processing was undertaken by different programming systems earlier. After a brisk introduction to modern C++ (C++17), you’ll be taken through language-level concurrency and the lock-free programming model to set the stage for our foray into the Functional Programming model. Following this, you’ll be introduced to RxCpp and its programming model. You’ll be able to gain deep insights into the RxCpp library, which facilitates reactive programming. You’ll learn how to deal with reactive programming using Qt/C++ (for the desktop) and C++ microservices for the Web. By the end of the book, you will be well versed with advanced reactive programming concepts in modern C++ (C++17).
Table of Contents (20 chapters)
Title Page
Copyright and Credits
Packt Upsell
Contributors
Preface
Index

RxCpp error and exception handling Operators


In a real-world scenario, no system is perfect. As we discussed in the previous section, resilience is one of the qualities of a reactive system. How a system handles errors and exceptions decides the future of that system. Early detection and the seamless handling of errors makes a system consistent and responsive. Compared to imperative programming approaches, the reactive programming model helps the user to handle errors separately, as and when the system detects an error or throws an exception.

In this section, we will take a look at how to handle exceptions and errors by using the RxCpp library. There are a variety of RxCpp Operators that can be used to react to on_error notifications from Observables. For instance, we might:

  • Handle the error by exiting from the sequence gracefully
  • Ignore the error and switch over to a backup Observable to continue the sequence
  • Ignore the error and emit a default value
  • Ignore the error and immediately try to restart...