Prueba ... atrapa ... finalmente devuelve valor

Descubrí que es una pena que no pueda devolver un valor de retorno de una construcción tan simple comotry ... catch ... finally

 def foo: String = {
    val in = new BufferedReader(.....)
    try {
      // val in = new BufferedReader(.....) -- doesn't matter
      in.readLine
    }
    catch {
      case e: IOException => e.printStackTrace()
    }
    finally {
      in.close()
    }
  }

Este código no se compila. ¿Hay alguna manera de hacer compilaresperar ¿Usando bibliotecas, construcciones de alto nivel, etc.? Quiero hacerlo solo utilizando la capacidad de Scala puro como lenguaje de programación.

Respuestas a la pregunta(4)

Su respuesta a la pregunta