In this chapter, we saw how we can handle optional values and how to handle errors in a purely functional way. You are now better equipped to write safer programs that do not throw exceptions and crash unexpectedly.
If you use Java libraries or some non-purely-functional Scala libraries, you will notice that they can throw exceptions. If you do not want your program to crash when exceptions are raised, I advise you to wrap them as early as possible insideEither
or Validated
.
We saw how Either
can be used to handle errors sequentially, and how Validated
can handle errors in parallel. As these two types are very similar, I would advise you to use Validated
most of the time. Instances of Validated
can indeed handle errors in parallel using mapN
, but they can also perform sequential validation using andThen
.
This chapter went a bit further in the way of writing programs in a functional way. In the next chapter we will explore other features of the language that you will necessarily encounter...