我需要在我的程序中抛出一个异常,但是异常会在将来发生,所以它会被抛出到另一个线程中。如何使这个例子有效?
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
答案 0 :(得分:3)
结果仍然是未来
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
}}
答案 1 :(得分:0)
如何使这个例子有效?
您可以使用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)