Scala错误-类型为Unit的表达式与预期的File类型不一致

时间:2019-01-30 18:19:53

标签: scala exception-handling

我有以下代码:

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类型的东西。

谁能告诉我在那放什么?

1 个答案:

答案 0 :(得分:3)

您保证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的{{1}的数据类型,这是更安全的。例如,

scala.util.Try