這裏的值是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',它將所有的東西都分爲 –