首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在Spec2中有时无法捕获异常?

为什么在Spec2中有时无法捕获异常?
EN

Stack Overflow用户
提问于 2014-03-31 18:28:17
回答 1查看 524关注 0票数 3

scala测试代码:

代码语言:javascript
复制
import play.api.test._
import scala._
import org.specs2.execute.Result

object ThrowTest extends PlaySpecification {

  "throwA" should {
    "catch the exception test1" in {
      world must throwA[Exception]
    }
    "catch the exception test2" in {
      hello {
        world =>
          world must throwA[Exception]
      }
    }
  }

  def hello(action: (String) => Result) = {
    action(world)
  }

  def world: String = {
    throw new Exception("world-exception")
  }

}

为什么test1像我预期的那样工作,而test2不是,它向外部抛出异常,并且永远不会捕获它:

代码语言:javascript
复制
[info] ! catch the exception test2
[error]     Exception: world-exception (ThrowTest.scala:26)
[error] database.ThrowTest$.world(ThrowTest.scala:26)
[error] database.ThrowTest$.hello(ThrowTest.scala:22)
[error] database.ThrowTest$$anonfun$1$$anonfun$apply$4.apply(ThrowTest.scala:14)
[error] database.ThrowTest$$anonfun$1$$anonfun$apply$4.apply(ThrowTest.scala:14)
[info] Total for specification ThrowTest
EN

回答 1

Stack Overflow用户

发布于 2014-03-31 20:36:33

因为对于测试2,在调用action之前会从hello抛出异常。action是一个String => Result,你可以用world来调用它,当它被计算时,会抛出一个异常,因此,所有这些代码:

代码语言:javascript
复制
world =>world must throwA[Exception]

永远不会被执行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22759222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档