我正在使用来自scala Exercises的资源进行一些scala练习,我发现intecept命令无效。
MacBook-Pro-Retina-de-Alonso:~ aironman$ scala
Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_51).
Type in expressions to have them evaluated.
Type :help for more information.
scala> val myMap = Map("OH" -> "Ohio", "WI" -> "Wisconsin", "IA" -> "Iowa")
myMap: scala.collection.immutable.Map[String,String] = Map(OH -> Ohio, WI -> Wisconsin, IA -> Iowa)
scala> var blewWithException = true
blewWithException: Boolean = true
scala> intercept[NoSuchElementException] {
| myMap("MI")
| blewWithException = false
| }
<console>:13: error: not found: value intercept
intercept[NoSuchElementException] {
^
scala>
我的借口如果这个问题已经解决了,但系统没有找到我的解决方案。
答案 0 :(得分:4)
intercept
方法是测试库的一部分,您必须下载ScalaTest jar并扩展Assertions
特征才能使用它。
答案 1 :(得分:2)
使用try-catch语句,这是捕获异常的本机正确方法:
try {
myMap("MI")
} catch { (e: NoSuchElementException) =>
// do whatever
}
或者完全避免例外。地图有.getOrElse
方法,用于指定当密钥不存在时要返回的内容。
myMap.getOrElse("MI", "No state")
或者匹配结果
myMap.get("MI") match {
case Some(result) => result
case _ => // do whatever
}