在Scala 2.10或更高版本中,如何提供“空”捕获块

时间:2013-09-25 15:17:33

标签: scala try-catch

我无法找到一种方法来提供一个空(无操作)方法来完成以下Scala代码中的catch块:

var autoCloseables: List[AutoCloseable] = List()
... //some code that fills the list with various java.sql.* instances; Connection, Statement, ResultSet
autoCloseables.map(try {_.close} catch {case se: SQLException => NoOp} )

我尝试将“NoOp”替换为“()”,“Unit”,“None”,“se.getMessage()”等。我继续在Eclipse中收到错误,说明各种形式的“类型不匹配;发现:单位,必需:AutoCloseable =>?”。

我也尝试将最后一行更改为以下内容,但仍然收到与上述相同的警告:

autoCloseables.map(try {_.close} catch {case _: Throwable => } )

对此的任何具体指导将不胜感激。而且,我了解ARM库。现在,请假设我无法使用它,并且需要从这个特定问题形成框架中解决的问题。谢谢。

1 个答案:

答案 0 :(得分:8)

import scala.util.Try

autoCloseables.map(a => Try(a.close))