簡體   English   中英

在將來拋出異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM