当前位置:首页 > 后端开发 > 正文内容

scala反常和IO

邻居的猫1个月前 (12-09)后端开发1167

反常处理

语法处理上和 Java 相似,可是又不尽相同。

java的反常处理

public class ExceptionDemo {
 public static void main(String[] args) {
 try {
 int a = 10;
 int b = 0;
 int c = a / b;
 }catch (ArithmeticException e){
// catch 时,需求将规模小的写到前面
 e.printStackTrace();
 }catch (Exception e){
 e.printStackTrace();
 }finally {
 System.out.println("finally");
 }
 } 
}

注意事项
(1)Java 言语依照 try—catch—finally 的办法来处理反常
(2)不论有没有反常捕获,都会履行 finally,因而一般能够在 finally 代码块中开释资源。
(3)能够有多个 catch,别离捕获对应的反常,这时需求把规模小的反常类写在前面,把规模大的反常类写在后边,不然编译过错。

Scala 反常处理

def main(args: Array[String]): Unit = {
 try {
 var n= 10 / 0
 }catch {
 case ex: ArithmeticException=>{
 // 产生算术反常
 println("产生算术反常")
 }
 case ex: Exception=>{
 // 对反常处理
 println("产生了反常 1")
 println("产生了反常 2")
 }
 }finally {
 println("finally")
 } 
}

总结:
咱们将可疑代码封装在 try 块中。在 try 块之后运用了一个 catch 处理程序来捕获反常。假如产生任何反常,catch 处理程序将处理它,程序将不会反常停止。

Scala 的反常的作业机制和 Java 相同,可是 Scala 没有“checked(编译期)”反常, 即 Scala 没有编译反常这个概念,反常都是在运转的时分捕获处理。

反常捕捉的机制与其他言语中相同,假如有反常产生,catch 子句是按次第捕捉的。因而,在 catch 子句中,越详细的反常越要靠前,越遍及的反常越靠后,假如把越遍及的反常写在前,把详细的反常写在后,在 Scala 中也不会报错,但这样是十分欠好的编程风格。

finally 子句用于履行不论是正常处理仍是有反常产生时都需求履行的过程,一般用于目标的整理作业,这点和 Java 相同。

用 throw 关键字,抛出一个反常目标。一切反常都是 Throwable 的子类型。throw 表达式是有类型的,便是 Nothing,由于 Nothing 是一切类型的子类型,所以 throw 表达式能够用在需求类型的当地

def test():Nothing = {
 throw new Exception("不对")
}
// java 供给了 throws 关键字来声明反常。
// 能够运用办法界说声明反常。
// 它向调用者函数供给了此办法或许引发此反常的信息。
// 它有助于调用函数处理并将该代码包含在 try-catch块中,以防止程序反常停止。
// 在 Scala 中,能够运用 throws 注解来声明反常
Scala
def main(args: Array[String]): Unit = {
 f11()
}
@throws(classOf[NumberFormatException])
def f11()={
 "abc".toInt
} 

IO

输入

Source.fromFile()

输入行

/**
  * 2019/11/18
  * @author Hangge.z  WX:17710299606
  */
object LineIO {
  def main(args: Array[String]): Unit = {
   // 读取文件
    val bs: BufferedSource = Source.fromFile("d://data.txt")
    // 获取一切的行
    val lines: Iterator[String] = bs.getLines()
    // 遍历一切的行
    for (line <- lines) {
      println(line)
    }
    // 行列表
    val list: List[String] = lines.toList
    //行数组
    val array: Array[String] = lines.toArray
    // 整个字符串
    val content: String = lines.mkString
    // 开释资源
    bs.close()
  }
}

输入字节

/**
  * 2019/11/18
  * @author Hangge.z  WX:17710299606
  *
  */
object ByteIo {
  def main(args: Array[String]): Unit = {
    val bs: BufferedSource = Source.fromFile("d://data.txt")
    // 获取输入流目标
    val reader: InputStreamReader = bs.reader()
    //越过指定长度  到指定方位
    reader.skip(1)
    // 读取一个字节 
    val byte: Int = reader.read()
    println(byte) // 99
    reader.close()
    bs.close()
  }
}
def main(args:Array[String]):Unit={
  val file = new File("F:\\info.bin")
  val in = new FileInputStream(file)
  val bytes = new Array[Byte](file.length.toInt)
  in.read(bytes)
  in.close

读取其他数据源

//从URL读取
val source= Source.fromURL("http://www.baidu.com","UTF-8")
val lineIterator =source.getLines
for(l<-lineIterator){
  println(l.toString())
}
//从给定的字符串读取--调试有用
val source2= Source.fromString("Hello DOIT")
println(source2.mkString)//Hello DOIT
//从规范输入读取
val in: BufferedReader = Console.in
println(in.readLine())

输出

def main(args: Array[String]): Unit = {
  val out = new PrintWriter("F:\\aa.txt")
  for(i<-1 to 100)
    out.println(i)
p.write("")
p.write(Array[Char]('a'))
p.append("")
  out.close
}

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=240

分享给朋友:
返回列表

上一篇:Scala操练

下一篇:Scala泛型

“scala反常和IO” 的相关文章

为什么我崇奉长时间主义,而且以为没有战略是很恐惧的工作?

为什么我崇奉长时间主义,而且以为没有战略是很恐惧的工作?

写在前面 3813 字 | 长时刻主义 | 时刻 | 考虑 | 生长 | 视角 | 观念 | 辩证 | 暴言留意 正文   前两天跟朋友聊到一个乐子,顺着聊到怎样看人。他问我一起的朋友 A 怎样样。我说,大问题没有,就是从长时刻主义来看,她没有战略是很惊骇的作业。   他过了两分钟,问我为什么会...

r语言和c语言,历史背景与设计理念

r语言和c语言,历史背景与设计理念

R语言和C语言都是编程语言,但它们的应用领域和设计理念有所不同。R语言是一种统计编程语言和图形语言,主要用于数据分析、统计计算和图形展示。它是由Ross Ihaka和Robert Gentleman于1993年开发的,后来由R Foundation维护。R语言具有丰富的统计函数库,可以方便地进行数据...

Python网址,python官网免费下载

Python网址,python官网免费下载

以下是关于Python的一些重要网址信息,包括官方网站、教程网站和社区网站: Python 官方网站 Python 官方网站: 提供Python源代码和安装程序下载,最新版本为Python 3.13.1。 包含Python标准库的文档、教程和指南,可以在线获取。 Python 教程网站 Py...

php开源系统,优势、应用与未来趋势

php开源系统,优势、应用与未来趋势

PHP开源系统有很多种,涵盖了不同的应用砛n2. PbootCMS: 特点:全新内核,永久开源免费,适合企业网站开发建设。 用途:高效、简洁、强大的CMS系统。 3. ThinkSAAS: 特点:基于PHP MySQL,支持Apache和Nginx,支持php7版本。...

为什么程序员鄙视php,PHP的历史与现状

为什么程序员鄙视php,PHP的历史与现状

1. 技术特点:PHP最初是为快速开发网站而设计的脚本语言,它的语法简单、易学,但也因此被一些程序员认为不够严谨和高效。随着技术的发展,一些程序员认为PHP在性能、扩展性和安全性方面存在不足。2. 历史背景:PHP在互联网的早期阶段非常流行,许多网站和应用程序都是用PHP开发的。随着时间的推移,其他...

scala伴生对象,深入理解其概念与用法

Scala中的伴生对象(Companion Object)是一种特殊的对象,它和类有相同的名称,并被放置在同一个源文件中。伴生对象通常用于存放与类相关的静态方法或字段。在Scala中,没有静态方法或静态字段的概念,但是伴生对象提供了类似的功能。 创建伴生对象在Scala中,创建伴生对象非常简单。你只...