1
如何异常捕获的代码与Java使用拦截转换为Scala的向前参考超值异常的定义扩展”?编译器错误,而Java异常代码转换为使用拦截阶:'
从阅读http://www.scalatest.org/getting_started_with_fun_suite它似乎被推荐捕获异常时要使用拦截。在异常捕获代码下面我需要访问异常类型,以便在 断言内,以检查它的类型:
catch {
case me : MyException => {
assert(me.getDetail.getClass() === classOf[GenericException]);
}
}
这似乎并不使用拦截如下代码会导致一个编译器错误是可能的:“前进参考值以上的异常”
在这里的定义延伸在转换为阶catch块:
val exception = intercept[MyException] {
assert(exception.getDetail.getClass() === classOf[GenericException]);
}
上线上发生错误
assert(exception.getDetail.getClass() === classOf[GenericException]);
感谢,这工作。因为如果抛出异常,代码正在执行,这是一个闭包还是其他一些阻塞名称?我从来没有见过以这种方式声明的val – user701254
不,这只是一个正常的方法,其中大括号之间的代码块是参数。参数周围的Parens可以省略,如果它是一个代码块,它允许你这样的好语法。如果您想进一步了解,请查看“拦截”的来源。 –