好吧所以标题有点模糊,因为我不确定如何说出来,但实际上我正在尝试做一个会超时的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只是为了如果我可以在类的范围内实现这个伪代码,那将是非常理想的。
基本上我的问题是我如何在它所在的类范围内实现上面的伪代码?
如果有什么不清楚,请告诉我!谢谢!
答案 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