【发布时间】:2019-06-20 02:55:43
【问题描述】:
我写了一些代码,对此我有点惊讶。我专门使用 try/catch/finally 只是为了了解它在 scala 中的工作原理。
我很惊讶,但似乎 try/catch/finally 实际上是 scala 中的一个表达式?它是新的还是我错过了什么?在某种程度上是功能性的,我可以理解,但这些是语言中的关键字,我看不到定义它们的功能。
此外,在该代码中,我不明白为什么 finally 对返回类型没有贡献。只有 catch 和 try 对返回类型有贡献。因此,我不确定最终何时执行。
谁能解释或指出该声明的规范,以便我理解。我再次知道使用 Try 类型是正确的方法,但我只想了解这里发生了什么。
def createTripleList(msg: String): List[String] = {
val outStream = new ByteArrayOutputStream
try {
val model = ModelFactory.createDefaultModel()
val jld = model.read(new ByteArrayInputStream(msg.getBytes()), null, "JSON-LD")
jld.write(outStream, "N-TRIPLE", null)
model.close()
outStream.toString.split("\n").toList
}
catch {
case e:Throwable => println(s"Could not parse JsonLd: ${e.toString}"); List.empty[String]
}
finally {outStream.close()}
}
【问题讨论】:
标签: scala