Scala 2.10 introduziu um novo método para fazer o tratamento de exceções – o scala.util.Experimente .
A classe funciona de forma muito semelhante à classe Qualquer [A, B]. Mas com uma semântica melhor.
Você pode encapsular qualquer código que possa lançar exceções dentro da função Try.apply ().
val result = Try(Integer.parseInt(...))
Agora, o resultado será uma das duas subclasses de Try – Success or Failure.
Se Integer.parseInt não lançar nenhuma exceção, será um sucesso, caso contrário, será uma falha.
Existem algumas maneiras de lidar com o resultado do Try.
// Traditional Java way to check result
val myInt = if (result.isSuccess) { result.get } else { 0 }
// Or using getOrElse()
val myInt = result.getOrElse(0)
// Or handle exception ourself
val myInt: Try[Int] = result.recover {
case e: Exception => 0
}
println(myInt.get)
// Since scala.util.Try is a monad, we could use for-comprehension
for (myInt <- result) {
println(myInt) // Only execute if result is a Success
}
// And of course map() / foreach() will works fine.
result.
result.map(_ + 1).foreach(println)