Scala 错误 - Unit 类型的表达式不符合预期的文件类型

Scala Error - Expression of type Unit doesn't conform to expected type File

我有以下代码:

var tempLastFileCreated: File = try {
  files(0)
} catch {
  case e: ArrayIndexOutOfBoundsException => ???
}

其中 filesval files: Array[File] = dir.listFiles()

现在无论我在 case e 中给出什么,我都会收到消息 Expression of type Unit doesn't conform to expected type File

我知道 => 的右边部分必须是 File.

类型的东西

谁能告诉我该放什么?

您承诺 tempLastFileCreatedFile,因此它不能同时是 UnitString,等等。您有几个选择。您可以改用 Option[File]

val tempLastFileCreated: Option[File] = try {
      Some(files(0))
    }
    catch {
      case e: ArrayIndexOutOfBoundsException => None
    }

或者,如果您想存储错误消息,例如,另一种选择是使用 Either:

val tempLastFileCreated: Either[String, File] = try {
      Right(files(0))
    }
    catch {
      case e: ArrayIndexOutOfBoundsException => Left("index out of bounds!")
    }

只要最适合您的需求。你可能想看看 Scala 的 scala.util.Try 数据类型,它更安全。例如,

val tempLastFileCreated: Option[File] = Try(files(0)) match {
  case Success(file) => Some(file)
  case Failure(throwable) => None //or whatever
}