While the error codes remain the most widespread technique of error handling in embedded programming, C++ offers another mechanism for this purpose, called exceptions.
Exceptions aim to simplify error handling and make it more reliable. When using error codes, developers have to check the result of each function for errors and propagate the result to the calling functions. This clutters the code with lots of if-else constructs, making the function logic more obscure.
When using exceptions, developers do not need to check for errors after every function invocation. Exceptions propagate through the call stack automatically, until they reach the code that can handle it properly by logging, retrying, or terminating the application.
While exceptions are the default error handling mechanism of the C++ standard library, communicating with peripheral...