Scala的异常通过try catch finally来处理,类似java,但是有诸多不同:
try {
remoteCalculatorService.add(1, 2)
} catch {
case e: ServerIsDownException => log.error(e, "the remote calculator service is unavailable. should have kept your trusty HP.")
} finally {
remoteCalculatorService.close()
}
不像Java中使用多个catch语句,Scala用一个catch语句捕获所有异常,然后根据模式匹配决定异常如何处理,逻辑上与Java的多个catch是一样的。
很重要的一点,try整个也是作为表达式( expression-oriented),可以将整个try赋给其他变量。
val result: Int = try {
remoteCalculatorService.add(1, 2)
} catch {
case e: ServerIsDownException => {
log.error(e, "the remote calculator service is unavailable. should have kept your trusty HP.")
0
}
} finally {
remoteCalculatorService.close()
}
这样就不需要像Java现在try外面生命变量,然后在try或catch中给变量赋值。需要注意的是:finally块会在异常被处理(如果有)后执行,但是finally不作为表达式的一部分(因此没有返回值)
本文探讨Scala中使用try-catch-finally处理异常的方法,与Java的对比,以及Scala中表达式作为try块的结果应用。
1027

被折叠的 条评论
为什么被折叠?



