类似的Try块在scala中尝试/ finally块

时间:2014-06-03 05:47:32

标签: scala functional-programming

scala Try的方式类似于:

timer.start()
try {
  doThis()
} finally {
  timer.cancel()
}

3 个答案:

答案 0 :(得分:10)

鉴于Try内的异常只是创建Failure值(而不是在使用try时将控制转移到外部catch块),原始代码中的代码{{ 1}}块只需要在finally之后执行。 换句话说,这样做:

Try

据我所知,没有内置的快捷方式可以避免捕获timer.start() val result = Try{ doThis() } timer.cancel() result 只是按原样返回。

答案 1 :(得分:4)

由于Try不会在程序流程中引发异常,我相信只需编写以下内容:

timer.start()
Try(doThis())
timer.cancel()

如果您希望处理异常(而不是盲目地忽略它)或调用结果,您可以将Try(doThis())分配给某个值并进一步处理。

答案 2 :(得分:0)

怎么样

Try {
  scala.util.control.Exception.ultimately {
    timer.cancel()
  } {
     doThis()
  }
}