try{
throwsException();
} catch {
case e: IOException => println("IO Exception");
} finally {
println("this code is always executed");
}
在
catch
部分,它总是弹出“类型单元的表达式不确认键入字符串”错误。
答案 0 :(得分:4)
看起来这段代码是一个更大的块的一部分,它应该被评估为String
。例如,我们可以考虑以下,
def getStringResult(): String = {
try{
throwsException();
} catch {
case e: IOException => println("IO Exception");
} finally {
println("this code is always executed");
}
}
现在,您可以看到,如果出现异常,则提供{ case e: IOException => println("IO Exception") }
,这是类型IOException => Unit
的部分功能。这导致类型不匹配。
您可以像以下一样解决此问题,
def getStringResult(): String = {
try{
throwsException();
} catch {
case e: IOException => "IOException String"
}
}
或者你可以做一个更像Scala的方法,
def getStringResult(): String = {
val resultTry = Try(throwsException())
// resultTry will be of type Try[String]
resultTry.getOrElse("String in case of exception")
}