这里的值是Scala的方法:返回从try-catch代码
def method1(arg: String*): List[String] = {
try {
new MyClass(new URL(arg(0)))
.map(x => x.getRawString.toString)
}
catch {
case e: Exception => e.printStackTrace()
}
}
如果我增加了一个附加价值,使其抱怨上
found : Unit
[error] required: List[String]
:
def method1(arg: String*): List[String] = {
val result = try {
new MyClass(new URL(arg(0)))
.map(x => x.getRawString.toString)
}
catch {
case e: Exception => e.printStackTrace()
}
result
}
它会说
found : Any
[error] required: List[String]
这很奇怪 - 是不是和第一种方法一样?
无论如何,Scala处理这种情况的标准方式是什么 - 从try { .. } catch { .. }
返回一个值?
您可以通过重新抛出异常来得到此类型,即'e.printStackTrace();抛出e'或退出,即'e.printStackTrace(); sys.exit',这取决于你想要发生什么 - 因为抛出的异常和sys.exit的类型是'Nothing',它将所有的东西都分为 –