我是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
的值未被打印。
任何帮助都将受到高度赞赏
答案 0 :(得分:2)
scala.util.Try
可用于捕获可能包含值或抛出异常的计算值。因此,在您的示例中,txt(0)
应包含值“ABC”,txt(3)
将抛出异常。在每种情况下,您都希望打印出不同的内容。
这是一个类似的例子,用于遍历List
中的一些组成索引,并尝试在txt
中访问该索引。其中一些会产生一个值,一些会失败。在这两种情况下,结果都会在Try
中作为Success
或Failure
进行捕获。根据返回的类型,打印的消息类似于您的示例。
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
()