我有一堆字段,我用XML解析,需要根据字段将它们转换为Int
或Boolean
类型。问题是在某些XML文件中,此标记可能不存在。当我尝试将空String
转换为Boolean
或Int
时,这会自然引发运行时错误。我是Scala的新手,有没有办法使用Option
类来做得更好?
这就是没有处理的代码。 parentNode始终存在,但子节点或字段可能不存在。
(parentNode / childNote / field).text.toBoolean
答案 0 :(得分:5)
您可以使用scala.util.Try
。如果Try
- 块内的代码成功,它将产生Success(result)
。否则返回Failure(exception)
。
Try((parentNode / childNote / field).text.toBoolean)
从这里你有几个选择来处理它。我假设,在该字段不存在的情况下,您有一个默认值。
1如果失败并不重要,您可以直接使用getOrElse
,在失败的情况下,将使用默认值。
Try((parentNode / childNote / field).text.toBoolean).getOrElse(defaultvalue)
2模式匹配
只有在有多个方法调用和/或异常处理时才应该使用它。
Try((parentNode / childNote / field).text.toBoolean) match {
case Success(bool) => {
//calculations
}
case Failure(ex) => {
//do something with the exception
}
}