[英]Throw exception from within a future
我需要在我的程序中拋出一個異常,但異常發生在將來,所以它被拋出在另一個線程中。 如何讓這個例子有效?
object TestFutures extends App {
val f0 = Future { 0 }
val f1 = Future { 1 }
val fx = Seq(f0,f1)
fx.map {
seq => seq.map { i =>
println("i="+i)
if (i == 1)
throw new Exception("This is an exception")
}
}
Thread.sleep(5000)
}
這是程序輸出,但我需要它拋出異常:
i=0
i=1
結果仍然是未來
val stillFutures: Seq[Future[Unit]] = fx.map {
seq => seq.map { i =>
println("i="+i)
if (i == 1)
throw new Exception("This is an exception")
}
}
您可以查看成功/失敗的每個未來
stillFutures.foreach{
_.onComplete{
case Success(_) => // do nothing
case Failure(ex) => throw ex
}}
如何讓這個例子有效?
您可以使用for
使其作為工作
val f0 = Future { 0 }
val f1 = Future { 1 }
val fx = Seq(f0,f1)
for(seq <- fx){
for(i <- seq) {
println("i="+i)
if (i == 1) {
throw new Exception("This is an exception")
}
}
}
Thread.sleep(5000)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.