scala:继续处理异常

时间:2016-05-09 15:48:08

标签: scala exception-handling

我是scala的新手,并且要求在出现异常时我必须继续处理下一条记录。

 object test {

      def main(args: Array[String]) {
        try {
          val txt = Array("ABC", "DEF", "GHI")
          val arr_val = txt(3)
          println(arr_val)
          val arr_val1 = txt(0)
          println(arr_val1)            
scala.util.control.Exception.ignoring(classOf[ArrayIndexOutOfBoundsException]) {
        println { "Index ouf of Bounds" }
      }
        } catch {
          case ex: NullPointerException =>
        }
      }
    }

我尝试忽略异常,但由于在此行之前出现了ArrayIndexOutOfBoundsException,因此arr_val1的值未被打印。

任何帮助都将受到高度赞赏

1 个答案:

答案 0 :(得分:2)

scala.util.Try可用于捕获可能包含值或抛出异常的计算值。因此,在您的示例中,txt(0)应包含值“ABC”,txt(3)将抛出异常。在每种情况下,您都希望打印出不同的内容。

这是一个类似的例子,用于遍历List中的一些组成索引,并尝试在txt中访问该索引。其中一些会产生一个值,一些会失败。在这两种情况下,结果都会在Try中作为SuccessFailure进行捕获。根据返回的类型,打印的消息类似于您的示例。

scala> List(0,1,3,2,4,5).foreach(x => println(Try(txt(x)).getOrElse(println("Index ouf of bounds"))))
ABC
DEF
Index ouf of bounds
()
GHI
Index ouf of bounds
()
Index ouf of bounds
()