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

Jas*_*Jas 8 functional-programming scala

斯卡拉的方式类似于Try:

timer.start()
try {
  doThis()
} finally {
  timer.cancel()
}
Run Code Online (Sandbox Code Playgroud)

Rég*_*les 11

假设一个异常Try只是创建一个Failure值(而不是在使用时将控制转移到外部catch块try),原始finally块中的代码 只需要在之后执行Try.换句话说,这将做:

timer.start()
val result = Try{
  doThis()
}
timer.cancel()
result
Run Code Online (Sandbox Code Playgroud)

据我所知,没有内置的快捷方式可以避免捕获result只是按原样返回它.


Nor*_*dyk 5

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

timer.start()
Try(doThis())
timer.cancel()
Run Code Online (Sandbox Code Playgroud)

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