對於我的第一個Scala程序,我試圖編寫一個小實用程序,它將XML文件從一個模式轉換爲另一個模式。如何在Scala中返回None
我開始寫這會給我的文件內容的方法:
def loadFile(filename: String, encoding: String = "utf-8"):Option[String] = {
try
{
val source = scala.io.Source.fromFile(filename, encoding)
val contents = source.mkString
source.close()
return Some(contents)
}
catch
{
return None
}
}
不過,這並不編譯。我從return None
行返回「value apply不是Nothing的成員」和「value isDefinedAt不是Nothing的成員」作爲錯誤消息。
我能找到的所有例子都返回一個Option使用匹配,但這裏沒有意義。我只是想不會因爲某些原因無法讀取文件而失敗。
在這種情況下該怎麼辦? Scala中有這樣一種模式嗎?
但我同意+ Nicolas Rinaudo關於這種風格 - 讓調用者決定如何處理錯誤,無論它是什麼。但是,有時候,你需要在調用方處理一些東西(比如清理緩存或者其他需要清理的東西),然後再將錯誤發回給調用者。 – ses