diff -r 4911bcd6b063 -r 8da29f6ef225 progs/detokenise.scala --- a/progs/detokenise.scala Wed Oct 02 02:09:48 2019 +0100 +++ b/progs/detokenise.scala Wed Oct 02 14:05:36 2019 +0100 @@ -10,6 +10,7 @@ object Detokenise { import java.io._ +import scala.util._ abstract class Token extends Serializable case object T_SEMI extends Token @@ -21,16 +22,16 @@ case class T_KWD(s: String) extends Token case class T_STR(s: String) extends Token -def deserialise[T](fname: String) : T = { - val in = new ObjectInputStream(new FileInputStream(fname)) - val data = in.readObject.asInstanceOf[T] - in.close - data +def deserialise[T](fname: String) : Try[T] = { + import scala.util.Using + Using(new ObjectInputStream(new FileInputStream(fname))) { + in => in.readObject.asInstanceOf[T] + } } def main(args: Array[String]) = { val fname = args(0) - val tks = deserialise[List[Token]](fname) + val tks = deserialise[List[Token]](fname).getOrElse(Nil) println(s"Reading back from ${fname}:\n${tks.mkString("\n")}") }