Scala Exception
2016-03-27 21:00
309 查看
Scala的异常通过try catch finally来处理,类似java,但是有诸多不同:
不像Java中使用多个catch语句,Scala用一个catch语句捕获所有异常,然后根据模式匹配决定异常如何处理,逻辑上与Java的多个catch是一样的。
很重要的一点,try整个也是作为表达式( expression-oriented),可以将整个try赋给其他变量。
这样就不需要像Java现在try外面生命变量,然后在try或catch中给变量赋值。需要注意的是:finally块会在异常被处理(如果有)后执行,但是finally不作为表达式的一部分(因此没有返回值)
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不作为表达式的一部分(因此没有返回值)
相关文章推荐
- 环形缓存区bufferC语言实现
- 20145221 《Java程序设计》第四周学习总结
- Linux下DHCP服务器配置与应用
- jquery
- JVM——JVM性能调优
- Java学习路线
- CSU 1697 Surface Area of Cubes 思维题
- SpringMVC总结一次完整的请求
- Android事件分发机制总结
- 网易2016实习生前端笔试题部分总结
- 求数组中的最大子数组2
- 字典树
- Spring 容器IOC的初始化过程
- 剑指offer-面试题12:打印1到最大的n位数
- 数据库各种连接的区别
- 数据库各种连接的区别
- Zoj 3537 Cake (DP最优三角形剖分)
- iOS Xib文件详解
- 巴萨教父克鲁伊夫去世&西班牙黄金一代谢幕的一点感想
- SQL SERVER 中 GO 的用法2