Scala编程:资源管理、参数机制、枚举、字符串插值与特质应用
1. 资源管理与异常处理
在处理文件等资源时, scala.io.Source API 是一个方便的工具,但如果文件不存在,它会抛出异常。为确保资源使用后能被正确清理,可将清理逻辑放在 finally 子句中。Scala 的异常处理与多数流行语言类似,可使用 throw new MyBadException(…) 抛出异常,若自定义异常是 case class ,可省略 new 。
下面是一个可复用的应用资源管理器的实现:
// src/main/scala/progscala2/rounding/TryCatchArm.scala
package progscala2.rounding
import scala.language.reflectiveCalls
import scala.util.control.NonFatal
object manage {
def apply[R <: { def close():Unit }, T](resource: => R)(f: R => T) = {
var res: Option[R] = None
try {
res = Some(resource) // Only reference "resource" once!!
f(res.get)
} catch {
超级会员免费看
订阅专栏 解锁全文

68

被折叠的 条评论
为什么被折叠?



