您的位置:首页 > 其它

Scala Exception

2016-03-27 21:00 309 查看
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不作为表达式的一部分(因此没有返回值)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: