Scala:无法捕获在闭包内抛出的异常

免责声明:斯卡拉的绝对新手:(

我有以下定义:

def tryAndReport(body: Unit) : Unit = {
  try {
    body
  } catch {
    case e: MySpecificException => doSomethingUseful
  }
}

我称之为:

tryAndReport{
  someCodeThatThrowsMySpecificException()
}

虽然对someCodeThatThrowsMySpecificException的调用发生得很好,但是在tryAndReport中没有捕获异常.

为什么?

谢谢!

最佳答案
尝试将单位从Unit更改为=>单元.它现在定义的方式,它认为body是一个代码块来评估Unit.使用call-by-name,它将在try中执行,并且应该被捕获.

转载注明原文:Scala:无法捕获在闭包内抛出的异常 - 代码日志