Per il mio primo programma Scala, sto provando a scrivere una piccola utility che convertirà un file XML da uno schema a un altro.Come restituire None in Scala
ho iniziato a scrivere un metodo che mi darà il contenuto del file:
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
}
}
Ma non viene compilato. Torno "valore apply non è un membro di Nothing" e "value isDefinedAt is not member of Nothing" come messaggi di errore dalla riga return None
.
Tutti gli esempi che posso trovare restituendo un'opzione usano la corrispondenza, ma questo non ha senso qui. Voglio solo non fallire se non riesco a leggere il file per qualche motivo.
Cosa devo fare in questo caso? C'è uno schema per fare questo genere di cose in Scala?
Ma concordo con + Nicolas Rinaudo sullo stile - lascia che il chiamante decida come gestire l'errore, qualunque esso sia.A volte, però, è necessario gestire alcune cose dal lato delle chiamate (come la pulizia della cache o qualsiasi altra cosa da pulire), prima di inviare nuovamente l'errore al chiamante. – ses