In the same way that Either stands for an effect of possible alternative results, Try denotes the effect of throwing an Exception by the function. In a sense, it is just a subset of Either, but it is so common that it has its own implementation. Unsurprisingly, the simplified representation of it looks quite familiar:
sealed abstract class Try[+T]
final case class Success[+T](value: T) extends Try[T]
final case class Failure[+T](exception: Throwable) extends Try[T]
Obviously, Success represents the happy-path outcome of the operation, and Failure is for exceptional conditions. The type for the contents of the Failure is fixed to be a subclass of Throwable, so we're back to the single type parameter for the whole ADT, which is similar to Option.
We'll study Try in the same way as we did with Option and Either – by creating, reading from, and abstracting over...