Scala 模式匹配与异常处理
本文介绍 Scala 中的模式匹配与异常处理,这两部分内容放在一起的原因是 Scala 中的异常处理是利用模式匹配的思想!
在 Jupyter
中学习效果更加哦!传送门~
Scala 模式匹配
Scala 提供了强大的模式匹配机制,一个模式匹配包含了一系列备选项,每个都开始于关键字 case
。每个备选项都包含了一个模式及一到多个表达式。箭头符号 =>
隔开了模式和表达式。
1 | // 模式匹配实例 |
many
match
对应 Java 里的 switch
,但是写在选择器表达式之后。即: 选择器 match {备选项}
。
match
表达式通过以代码编写的先后次序尝试每个模式来完成计算,只要发现有一个匹配的 case
,剩下的case
不会继续匹配。
1 | //不同数据类型的模式匹配 |
2
many
one
scala.Int
使用样例类
使用了case
关键字的类定义就是就是样例类(case classes),样例类是种特殊的类,经过优化以用于模式匹配。
1 | // 实例 |
Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?
Scala 异常处理
Scala 的异常处理和其它语言比如 Java 类似。
Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。
抛出异常
Scala 抛出异常的方法和 Java一样,使用 throw
方法,例如,抛出一个新的参数异常:
1 | throw new IllegalArgumentException |
捕获异常
异常捕捉的机制与其他语言中一样,如果有异常发生,catch
字句是按次序捕捉的。因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越靠后。 如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。
捕捉异常的 catch
子句,语法与其他语言中不太一样。在Scala里,借用了模式匹配的思想来做异常的匹配,因此,在catch
的代码里,是一系列case
字句,
1 | import java.io.FileReader |
Missing file exception
finally 语句
finally
语句用于执行不管是正常处理还是有异常发生时都需要执行的步骤
1 | import java.io.FileReader |
Missing file exception
Exiting finally...
联系作者
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 梦家博客!
评论
TwikooValine