【发布时间】:2013-03-20 15:58:26
【问题描述】:
我应该如何处理理解中的潜在异常?在此示例中,我想处理行格式不正确时发生的MatchException。我想抛出一个包含行字符串的信息更丰富的异常。问题是行字符串仅在 inside for 理解中知道,但使用 try/catch 的传统错误处理将在 outside for 理解中。
val gold = Resource.using (Source.fromFile(file)) { source =>
(for {
line <- source.getLines
Array(annotation, string, _ @ _*) = line.split("\t")
boolean = if (annotation == "1") true else false
} yield {
string -> boolean
}).toMap
}
Scala 2.10 的 Try 在这里可能会有所帮助,但我仍在使用 2.9.2。
【问题讨论】:
-
看起来像 Try was backported to 2.9.3 以及 Futures 和 Promises,因此您可以轻松迁移到 2.9.3(与 2.9.1/2 二进制兼容,只需交换工件)并享受它
-
酷,我仍然不确定如何准确地使用它来获取行文本。