In this chapter, I learned about how error handling contributes to the complexity of a system and how hiding errors can reduce this complexity.
Error handling itself is not a core function, but how errors are handled within a system is very important. This is particularly true in production environments, where improper handling of errors can lead to catastrophic outcomes.
It's not always sufficient to simply notify about an error. Depending on the situation, masking or aggregating them can reduce system complexity and, consequently, lead to fewer bugs.
Whether or not it's necessary to notify the caller of the error depends on the system, so it's important to discuss and design this aspect thoroughly.
By the way, I learned the expression 'defining away' in this chapter. Refers to a situation where the problem is not truly solved, but appears to be solved by a technical change in the definition.