Für mein erstes Scala-Programm versuche ich ein kleines Dienstprogramm zu schreiben, das eine XML-Datei von einem Schema in ein anderes konvertiert.So geben Sie None in Scala zurück
Ich begann ein Verfahren zu schreiben, die mir den Inhalt der Datei geben:
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
}
}
Aber es funktioniert nicht kompilieren. Ich bekomme zurück "Wert anwenden ist kein Mitglied von Nothing" und "Wert isDefinedAt ist kein Mitglied von Nothing" als Fehlermeldungen aus der Zeile return None
.
Alle Beispiele, die ich finden kann, die eine Option zurückbringen, verwenden das Zusammenbringen, aber das macht hier keinen Sinn. Ich möchte einfach nicht versagen, wenn ich die Datei aus irgendeinem Grund nicht lesen kann.
Was soll ich in diesem Fall tun? Gibt es ein Muster dafür in Scala?
Aber ich stimme mit + Nicolas Rinaudo über den Stil - lassen Sie Anrufer entscheiden, wie mit Fehler umzugehen, was auch immer es ist.Manchmal müssen Sie jedoch einige Dinge auf der Seite des Anrufers behandeln (wie zum Beispiel den Cache säubern oder was auch immer zu säubern ist), bevor Sie den Fehler an den Anrufer zurücksenden. – ses