At the start of the previous section, we explained the let it crash philosophy, and why you should follow it to build reliable, fault-tolerant applications. Having learned about the mechanisms that Elixir provides to detect errors, we will now look at supervisors, which build on top of these mechanisms to provide us a way to recover from errors.
Before diving into supervisors, we want to point out an important aspect regarding error handling in applications that follow the let it crash philosophy. We've been discussing how this approach changes the way you handle errors, and that it provides fault tolerance because you can recover from errors by detecting them and taking some corrective action. However, this approach shouldn't be used with errors that you know beforehand may happen during the normal execution...