怎么做:在X持续时间内尝试{block of code}并捕获{Exceptions,例如Timeout}?

时间:2014-06-27 15:19:35

标签: scala exception-handling timeout try-catch

好吧所以标题有点模糊,因为我不确定如何说出来,但实际上我正在尝试做一个会超时的try-catch语句......这里有一些可能有帮助的伪代码描述我想要做的事情:

try (10 seconds) {
  *make some connection and do some things*
} catch {
  case ex1: TimeoutException => *do something*
  case ex2: Exception => *do something else*
}

目前,我正在使用的硬件中存在一个错误,即连接请求永远不会得到响应,因此它只是坐在那里并且没有捕获任何异常。由于它只是一个错误(应该是暂时的),我不想操纵应用程序的体系结构(特别是我想创建一个新的actor只是为了如果我可以在类的范围内实现这个伪代码,那将是非常理想的。

基本上我的问题是我如何在它所在的类范围内实现上面的伪代码?

如果有什么不清楚,请告诉我!谢谢!

1 个答案:

答案 0 :(得分:3)

尝试:

import scala.concurrent._
import ExecutionContext.Implicits.global

val f = future {
    // make some connection and do some things
}
try {
    Await.result(f, 10 seconds);
} catch {
    case e: TimeoutException => // do something
    case _ => // do something else
}

更多信息:Futures and Promises