Scala io.Source.FromFile是否会返回任何类型的异常?

DDB*_*DDB 5 scala exception file ioexception

当我停在这行代码上时,我正在查看我的代码,以便最后一次搜索异常:

var list: Array[String] = Source.fromFile(this.Path).getLines.toArray
Run Code Online (Sandbox Code Playgroud)

我搜索了scala-lang的文档,但似乎没有任何一种方法抛出任何一种ioException......这怎么可能?

编辑:

try {
  var list: Array[String] = Source.fromFile("").getLines.toArray
}
catch {
  case ex:Exception => println(ex.getMessage)
}
Run Code Online (Sandbox Code Playgroud)

什么都不打印?

ped*_*rla 3

检查异常是由 javac 强制执行的,JVM 并不真正了解它们。与 Java 不同的是,Scala 并不关心受检查的异常。

例如,查看源代码,您不会注意到任何处理异常的代码。这在传统的 Java 中是不可能的,需要try/catchthrows子句。

尽管如此,Scala 库作者可能仍然希望确保 Java 用户检查这些异常,因此有@throws注释,它可以让您声明一个方法可以像 Java 子句一样抛出异常throws。请务必记住,这@throws仅适用于 Java 使用。

您可能还想看看scala.util.control.Exception。它包含处理异常的各种好东西。

  • 我知道,但如果我不了解 java,我就无法知道该行可能会抛出什么异常(感谢@Don Roby)!一件事是 Scala 不强迫你捕获异常,另一件事是不让我对它们的存在感到高兴!只有我一个对此不满意吗? (2认同)