scala Try
的方式类似于:
timer.start()
try {
doThis()
} finally {
timer.cancel()
}
答案 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()
}
}
?