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

cha*_*ium 3 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} )
Run Code Online (Sandbox Code Playgroud)

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

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

autoCloseables.map(try {_.close} catch {case _: Throwable => } )
Run Code Online (Sandbox Code Playgroud)

任何具体的指导将非常感谢.而且,我了解ARM库.现在,请假设我无法使用它,并且需要从这个特定问题构成框架中解决的问题.谢谢.

Bla*_*son 8

import scala.util.Try

autoCloseables.map(a => Try(a.close))
Run Code Online (Sandbox Code Playgroud)

  • 为什么使用`map()`而不是`foreach()`?没有要回报的价值. (3认同)
  • @ chaotic3quilibrium参见http://stackoverflow.com/questions/7627117/scala-underscore-error-missing-parameter-type-for-expanded-function (3认同)