At the time of this writing there aren’t many examples of the Scala Exception
object allCatch
method to be found, so I thought I’d share some examples here.
Scala Exception/allCatch examples
In each example I first show the “success” case, and then show the “failure” case. Other than that, I won’t explain these examples too much, but hopefully seeing them in the REPL will be enough to get you pointed in the right direction:
scala> import scala.util.control.Exception._ import scala.util.control.Exception._ // OPTION scala> allCatch.opt("42".toInt) res0: Option[Int] = Some(42) scala> allCatch.opt("42a".toInt) res1: Option[Int] = None // TRY scala> allCatch.toTry(Try("42".toInt)) val res2: scala.util.Try[Int] = Success(42) scala> allCatch.toTry(Try("hi mom".toInt)) val res3: scala.util.Try[Int] = Failure(java.lang.NumberFormatException: For input string: "hi mom") // EITHER scala> allCatch.either("42".toInt) res4: scala.util.Either[Throwable,Int] = Right(42) scala> allCatch.either("42a".toInt) res5: scala.util.Either[Throwable,Int] = Left(java.lang.NumberFormatException: For input string: "42a")
It’s nice that allCatch
supports Option
, Try
, and Either
; that’s cool, and convenient.
While I’m in the allCatch
neighborhood, here’s how you can write a string-to-int conversion function with allCatch
:
import scala.util.control.Exception._ def makeInt(s: String): Option[Int] = allCatch.opt(s.toInt)
Update
As a brief update, and for my own reference, here are examples of how to write methods/functions using allCatch
in Scala with the Option
, Try
, and Either
classes:
import scala.util.control.Exception._
import scala.util.{Try, Success, Failure}
// Option
def toInt(s: String): Option[Int] = allCatch.opt(Integer.parseInt(s))
// Try
def toInt(s: String): Try[Int] = allCatch.withTry(Integer.parseInt(s))
// Either
def toInt(s: String): Either[Throwable, Int] =
allCatch.either(Integer.parseInt(s))
this post is sponsored by my books: | |||
#1 New Release |
FP Best Seller |
Learn Scala 3 |
Learn FP Fast |
See these Scaladoc pages for more information: