如果我有一個List [Try [Int]]來表示函數的某些結果。什麼是用異常進行批處理的慣用斯卡拉方法
scala> import scala.util._
scala> val result = List[Try[Int]](
Success(1),
Failure(new RuntimeException("first exception")),
Success(2),
Failure(new RuntimeException("second exception")))
如果我僅僅收取的成功,我躲在例外
scala> result.collect{case Success(x)=>x}
res1: List[Int] = List(1, 2)
我可以分區,但結果有待進一步
scala> val res2 = result.partition(_.isSuccess)
res2: (List[scala.util.Try[Int]], List[scala.util.Try[Int]]) = (List(Success(1), Success(2)),List(Failure(java.lang.RuntimeException: first exception), Failure(java.lang.RuntimeException: second exception)))
scala> res2._1.collect{case Success(x)=>x}
res6: List[Int] = List(1, 2)
scala> res2._2.collect{case Failure(x)=>x}
res7: List[Throwable] = List(java.lang.RuntimeException: first exception, java.lang.RuntimeException: second exception)
處理,這會變得更加複雜如果我有一個List[Try[Option[Int]]]
。
你還沒有描述你實際上想要成功和失敗。你到底在找什麼? –
驗證仍不能涵蓋您希望成功和失敗的情況。 –