我有以下代码:
var tempLastFileCreated: File = try {
files(0)
} catch {
case e: ArrayIndexOutOfBoundsException => ???
}
其中files
是val files: Array[File] = dir.listFiles()
现在我在case e
中给出的任何信息都会得到消息Expression of type Unit doesn't conform to expected type File
我知道=>
的右手部分必须是File
类型的东西。
谁能告诉我在那放什么?
答案 0 :(得分:3)
您保证tempLastFileCreated
是File
,因此它也不能是Unit
或String
等。您有几种选择。您可以改用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