1

如何使用拦截将异常捕获代码从 java 转换为 scala?

从阅读http://www.scalatest.org/getting_started_with_fun_suite看来,似乎建议在捕获异常时使用拦截。在下面的异常捕获代码中,我需要访问 Exception 类型以便在 assert 中检查其类型:

catch {
          case me : MyException => {
            assert(me.getDetail.getClass() === classOf[GenericException]);
          }
        }

使用拦截似乎不可能,因为下面的代码会导致编译器错误:“前向引用扩展了值异常的定义”

这是转换为 scala 的 catch 块:

        val exception = intercept[MyException] {
assert(exception.getDetail.getClass() === classOf[GenericException]);   
    }

在线发生错误

assert(exception.getDetail.getClass() === classOf[GenericException]);
4

1 回答 1

1

那么你的定义exception是循环的。你想要的是:

val exception = intercept[MyException] {
   <your exception-throwing code here>
}

assert(exception.getDetail.getClass() === classOf[GenericException])
于 2012-12-17T17:33:44.337 回答