scala异常处理、提取器(Extractor)、文件IO
一、Scala 异常处理
Scala 的异常处理类似与其他语言
- Scala 的方法可以通过抛出异常的方法的方式来终止相关代码的运行,不必通过返回值。
抛出异常
- scala使用throw方法抛出异常,eg:抛出一个新的参数异常--->throw new IllegalArgumentException
捕获异常
- 异常捕捉机制:若有异常发生,catch字句是按次序捕捉的。因此,在catch字句中,越具体的异常越要靠前,越普遍的异常越要靠后。如果抛出的异常不在catch字句中,该异常则无法处理,会被升级到调用者处。
捕获异常的catch字句,语法跟其他语言不太一样。
- 在scala中,借用了模式匹配的思想来做异常的匹配,因此在catch的代码里,是一系列case字句。
- catch字句里的内容跟match里的case是完全一样的。
- 由于异常捕捉是按次序的,若最普遍的异常Throwable写在最前面,则在它后面的case都捕捉不到,因此需要将它写在最后面。
finally语句
- finally 语句:不管是正常处理还是有异常发生时都将执行
二、提取器(Extractor)
提取器是从传递给它的对象中提取出构造该对象的参数。
Scala 标准库包含了一些预定义的提取器
- Scala 提取器是一个带有unapply方法的对象。unapply方法算是apply方法的反向操作:unapply接受一个对象,然后从对象中提取值,提取的值通常是用来构造该对象的值。
object Test {/*通过apply方法,无需使用new操作即可创建对象。所以可以通过语句Test("Zara", "gmail.com") 来构造一个字符串 "Zara@gmail.com"*///注入方法(可选)def apply(user:String,domain:String) = {user+"@"+domain}/*使用 Unapply 方法从对象中提取用户名和邮件地址的后缀。unapply 方法在传入的字符串不是邮箱地址时返回 None。*///提取方法def unapply(str: String): Option[(String,String)] = {val parts = str split "@"if (parts.length == 2){Some(parts(0),parts(1))}else{None}}def main(args: Array[String]){println("Apply方法:"+apply("Zara","gmail.com"))println("Unapply方法:"+unapply("Zara@gmail.com"))println("Unapply方法:"+unapply("Zara Ali"))} }
运行结果:
Apply方法:Zara@gmail.com
Unapply方法:Some((Zara,gmail.com))
Unapply方法:None
提取器使用模式匹配
实例化一个类时,可以带上0个或者多个参数,编译器在实例化时会调用 apply 方法。
可以在类和对象中都定义 apply 方法。
unapply 用于提取我们指定查找的值,它与 apply 的操作相反。
当我们在提取器对象中使用 match 语句是,unapply 将自动执行
三、Scala 文件 I/O
Scala 进行文件写操作,直接用的都是 java中 的 I/O 类 (java.io.File):
import java.io._object Test {def main(args: Array[String]){val writer = new PrintWriter(new File("test.txt"))writer.write("离殇")writer.close()} }
执行上述代码,会在当前目录下产生一个 test.txt 文件,文件内容为"离殇"
从屏幕上读取用户输入
接收用户在屏幕输入的指令来处理程序。
Scala2.11 后的版本 Console.readLine 已废弃,使用 scala.io.StdIn.readLine() 方法代替。
从文件上读取内容
可以使用 Scala 的 Source 类及伴生对象来读取文件。
eg:从 "test.txt"(之前已创建过) 文件中读取内容
scala异常处理、提取器(Extractor)、文件IO相关推荐
- 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)
目录 提取器(Extractor) 定义提取器 提取器(Extractor) 我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量.例如: // ...
- Scala基础教程(九):提取器、文件I/O
模式匹配使用提取器: 当一个类的实例后跟括号使用零个或多个参数的列表,所述编译器调用应用的方法在该实例上.我们可以定义同时适用对象和类. 如上述所提到的,unapply方法的目的是提取我们寻找一个特定 ...
- scala基础之提取器extractor
一 apply & unapply方法 apply方法我们已经非常熟悉了,它帮助我们无需new操作就可以创建对象,而unapply方法则用于析构出对象,在模式匹配中特别提到,如果一个类要能够应 ...
- Scala 提取器(Extractor)
提取器: 1.其实伴生对象有两个方法 ,A: apply B : unapply方法 2.我们使用apply方法来构造我们的一个对象, 不需要使用new关键字了.对吧. 3.我们使用unapp ...
- Scala 入门3(类、Trait、模式匹配、正则、异常、提取器、IO)
文章目录 1. 类和对象 2. Trait 3. 模式匹配 4. 正则 5. 异常处理 6. 提取器 7. 文件 IO 学自 https://www.runoob.com/scala/scala-tu ...
- 3文件提取器_eMail Address Extractor for Mac(邮件地址提取器)
eMail Address Extractor for Mac 是一款电子邮件地址提取器,非常直观,只需选择输出文件格式,然后将数据文件或整个目录拖放到App区,以快速生成所有有效电子邮件地址的非重复 ...
- Scala入门到精通——第二十五节 提取器(Extractor)
本节主要内容 apply与unapply方法 零变量或变量的模式匹配 提取器与序列模式 scala中的占位符使用总结 1. apply与unapply方法 apply方法我们已经非常熟悉了,它帮助我们 ...
- scala 提取器模式匹配_Scala提取器应用,取消应用和模式匹配
scala 提取器模式匹配 Scala extractor is an object which has a method called unapply as one of its members. ...
- scala 写入文件_Scala文件IO –写入文件,读取文件
scala 写入文件 Today we will look into Scala File IO operations. File operations mainly include reading ...
- android7.1解包打包工具,万能解包提取器Universal Extractor v1.7下载
软件爱好者经常会从小众的软件站下载,尝鲜各种酷软,但是有时候难免会遇到加壳的李鬼软件,这时可以借助Universal Extractor帮你提取软件存档文件,轻松一键即可完成提取. Universal ...
最新文章
- tomcat 热部署 生产环境_屋顶隔热改善舍内热环境及生产性能
- python数据库pymysql_Python——数据库04 Python操作MySQL pymysql模块使用,python,04python,MySQLpymysql...
- 分离图片中的隐藏文件方法总结
- vux Cell组件
- 【译】你不知道的 Chrome 调试工具技巧 第二十天:Workspace的黑魔法
- jQuery学习之一---选择器
- opencv3.1.0 交叉编译 H3516a
- 同步代码块和同步方法案例实战
- sql增删改查_5分钟GET全栈开发 - 增删改查的取经之路
- 浅析中西思维差异对英语口语交际的影响
- Android下拉刷新的实现(一) - SwipeRefreshLayout篇
- IBM Rational software Architect 9.0安装包百度网盘
- ​华为轮值董事长胡厚崑:没有自建芯片厂计划;​苹果赔偿1亿美元给App开发者;Git.io停用|极客头条
- 【题解】洛谷P3084 照片(差分约束)
- 解读B站Q4财报:Q4营收同比增74%,B站破圈能继续俘获大众芳心?
- 雨林木风 GHOST_XP SP3 快速装机版YN12.08
- 农业大棚智能控制系统
- 解决交通仿真软件(SUMO)中找不到“select edge”选项的问题
- LeetCode1218
- (机器学习周志华 西瓜书 南瓜书)吃瓜教程 Task02
热门文章
- 电视盒子刷入linux系统
- 这个开源项目有点强,无需编码,可一键生成前后端代码
- 机器学习的transformer
- 使用office tool plus清除office激活状态
- 使用IIS 共享文件
- matlab中holdon的用法图解,Holdon有多少种用法?-hold on-英语-雷颇磺同学
- 移动端背景图css6,移动端适配之雪碧图(sprite)背景图片定位
- 全面解析Sbo业务审批流程与结构
- 小米电视联网后显示无法解析小米电视服务器,小米电视连上无线不能上网怎么回事?教你解决办法...
- 如何在Android上查看本地空气质量指数