一、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相关推荐

  1. 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)

    目录 提取器(Extractor) 定义提取器 提取器(Extractor)  我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量.例如: // ...

  2. Scala基础教程(九):提取器、文件I/O

    模式匹配使用提取器: 当一个类的实例后跟括号使用零个或多个参数的列表,所述编译器调用应用的方法在该实例上.我们可以定义同时适用对象和类. 如上述所提到的,unapply方法的目的是提取我们寻找一个特定 ...

  3. scala基础之提取器extractor

    一 apply & unapply方法 apply方法我们已经非常熟悉了,它帮助我们无需new操作就可以创建对象,而unapply方法则用于析构出对象,在模式匹配中特别提到,如果一个类要能够应 ...

  4. Scala 提取器(Extractor)

    提取器: 1.其实伴生对象有两个方法 ,A: apply     B : unapply方法 2.我们使用apply方法来构造我们的一个对象, 不需要使用new关键字了.对吧. 3.我们使用unapp ...

  5. Scala 入门3(类、Trait、模式匹配、正则、异常、提取器、IO)

    文章目录 1. 类和对象 2. Trait 3. 模式匹配 4. 正则 5. 异常处理 6. 提取器 7. 文件 IO 学自 https://www.runoob.com/scala/scala-tu ...

  6. 3文件提取器_eMail Address Extractor for Mac(邮件地址提取器)

    eMail Address Extractor for Mac 是一款电子邮件地址提取器,非常直观,只需选择输出文件格式,然后将数据文件或整个目录拖放到App区,以快速生成所有有效电子邮件地址的非重复 ...

  7. Scala入门到精通——第二十五节 提取器(Extractor)

    本节主要内容 apply与unapply方法 零变量或变量的模式匹配 提取器与序列模式 scala中的占位符使用总结 1. apply与unapply方法 apply方法我们已经非常熟悉了,它帮助我们 ...

  8. scala 提取器模式匹配_Scala提取器应用,取消应用和模式匹配

    scala 提取器模式匹配 Scala extractor is an object which has a method called unapply as one of its members. ...

  9. scala 写入文件_Scala文件IO –写入文件,读取文件

    scala 写入文件 Today we will look into Scala File IO operations. File operations mainly include reading ...

  10. android7.1解包打包工具,万能解包提取器Universal Extractor v1.7下载

    软件爱好者经常会从小众的软件站下载,尝鲜各种酷软,但是有时候难免会遇到加壳的李鬼软件,这时可以借助Universal Extractor帮你提取软件存档文件,轻松一键即可完成提取. Universal ...

最新文章

  1. tomcat 热部署 生产环境_屋顶隔热改善舍内热环境及生产性能
  2. python数据库pymysql_Python——数据库04 Python操作MySQL pymysql模块使用,python,04python,MySQLpymysql...
  3. 分离图片中的隐藏文件方法总结
  4. vux Cell组件
  5. 【译】你不知道的 Chrome 调试工具技巧 第二十天:Workspace的黑魔法
  6. jQuery学习之一---选择器
  7. opencv3.1.0 交叉编译 H3516a
  8. 同步代码块和同步方法案例实战
  9. sql增删改查_5分钟GET全栈开发 - 增删改查的取经之路
  10. 浅析中西思维差异对英语口语交际的影响
  11. Android下拉刷新的实现(一) - SwipeRefreshLayout篇
  12. IBM Rational software Architect 9.0安装包百度网盘
  13. ​华为轮值董事长胡厚崑:没有自建芯片厂计划;​苹果赔偿1亿美元给App开发者;Git.io停用|极客头条
  14. 【题解】洛谷P3084 照片(差分约束)
  15. 解读B站Q4财报:Q4营收同比增74%,B站破圈能继续俘获大众芳心?
  16. 雨林木风 GHOST_XP SP3 快速装机版YN12.08
  17. 农业大棚智能控制系统
  18. 解决交通仿真软件(SUMO)中找不到“select edge”选项的问题
  19. LeetCode1218
  20. (机器学习周志华 西瓜书 南瓜书)吃瓜教程 Task02

热门文章

  1. 电视盒子刷入linux系统
  2. 这个开源项目有点强,无需编码,可一键生成前后端代码
  3. 机器学习的transformer
  4. 使用office tool plus清除office激活状态
  5. 使用IIS 共享文件
  6. matlab中holdon的用法图解,Holdon有多少种用法?-hold on-英语-雷颇磺同学
  7. 移动端背景图css6,移动端适配之雪碧图(sprite)背景图片定位
  8. 全面解析Sbo业务审批流程与结构
  9. 小米电视联网后显示无法解析小米电视服务器,小米电视连上无线不能上网怎么回事?教你解决办法...
  10. 如何在Android上查看本地空气质量指数