目录

异常处理

捕获异常

抛出异常


异常处理

Scala中 无需在方法上声明异常

来看看下面一段代码。

  def main(args: Array[String]): Unit = {val i = 10 / 0println("你好!")}Exception in thread "main" java.lang.ArithmeticException: / by zero
at ForDemo$.main(ForDemo.scala:3)
at ForDemo.main(ForDemo.scala)

执行程序,可以看到scala抛出了异常,而且没有打印出来"你好"。说明程序出现错误后就终止了。

那怎么解决该问题呢?

捕获异常

在scala中,可以使用异常处理来解决这个问题。以下为scala中try...catch异常处理的语法格式:

try {// 代码
}
catch {// 这里面是偏函数, 走的是模式匹配case ex:异常类型1 => // 代码case ex:异常类型2 => // 代码
}
finally {// 代码
}
  • try中的代码是我们编写的业务处理代码
  • 在catch中表示当出现某个异常时,需要执行的代码
  • 在finally中,是不管是否出现异常都会执行的代码

示例:

try {val i = 10 / 0println("你好!")
} catch {case ex: Exception => println(ex.getMessage)
} finally {println("我始终都会执行!")
}

抛出异常

我们也可以在一个方法中,抛出异常。语法格式和Java类似,使用throw new Exception...

示例:

  def main(args: Array[String]): Unit = {throw new Exception("这是一个异常")}Exception in thread "main" java.lang.Exception: 这是一个异常
at ForDemo$.main(ForDemo.scala:3)
at ForDemo.main(ForDemo.scala)

我们可以看到,scala不需要再main方法上声明要抛出的异常,它已经解决了再Java中被认为是设计失败的检查型异常。下面是Java代码

    public static void main(String[] args) throws Exception {throw new Exception("这是一个异常");}

scala异常处理语法要比Java简洁、易用。

1.scala中也是使用try...catch...finally处理异常

2.所有异常处理都是在catch语句中,每一个异常处理写成

ex1:异常类型1 => 异常处理代码
case ex2:异常类型1 => 异常处理代码
case ex3:异常类型1 => 异常处理代码

3.抛出异常使用throw

4.scala中方法抛出异常不需要像Java一样编写异常声明

2021年大数据常用语言Scala(三十四):scala高级用法 异常处理相关推荐

  1. 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)

    目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...

  2. 2021年大数据常用语言Scala(三):Scala解释器

    目录 scala解释器 启动scala解释器 执行scala代码 退出解释器 scala解释器 后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代 ...

  3. 2021年大数据常用语言Scala(四):基础语法学习 声明变量

    目录 声明变量 语法格式 在解释器中定义一个变量 val和var变量 使用类型推断来定义变量 惰性赋值 声明变量 我们将来每一天编写scala程序都会定义变量.那scala语言如何定义变量呢? 语法格 ...

  4. 2021年大数据常用语言Scala(一):Scala简介

    目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...

  5. 2021年大数据常用语言Scala(十八):基础语法学习 Map对象

    目录 Map对象 不可变Map 可变Map Map基本操作 Map对象 Map可以称之为映射.它是由键值对组成的集合.在scala中,Map也分为不可变Map和可变Map. 不可变Map 定义 语法 ...

  6. 2021年大数据常用语言Scala(二):Scala开发环境安装

    目录 开发环境安装 安装JDK 安装scala SDK 步骤 具体操作 安装IDEA scala插件 步骤 开发环境安装 学习如何编写scala代码之前,需要先安装scala编译器以及开发工具 sca ...

  7. 2021年大数据常用语言Scala(十七):基础语法学习 Set

    目录 Set 不可变集 可变集 Set Set(集)是代表没有重复元素的集合.Set具备以下性质: 元素不重复 不保证插入顺序 和List正好相反, List: 元素可以重复 保证插入顺序 scala ...

  8. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数

    目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...

  9. 2021年大数据常用语言Scala(三十六):scala高级用法 泛型

    目录 泛型 定义一个泛型方法 定义一个泛型类 上下界 协变.逆变.非变 非变 协变 逆变 泛型 scala和Java一样,类和特质.方法都可以支持泛型.我们在学习集合的时候,一般都会涉及到泛型. sc ...

  10. 2021年大数据常用语言Scala(三十七):scala高级用法 高阶函数用法

    目录 高阶函数用法 作为值的函数 匿名函数 柯里化(多参数列表) 闭包 高阶函数用法 Scala 混合了面向对象和函数式的特性,在函数式编程语言中,函数是"头等公民",它和Int. ...

最新文章

  1. JavaScript中substr()和substring的区别
  2. 基于IndexedDB实现简单文件系统
  3. burpsuite插件的使用
  4. 中国工业信息安全大会召开,开发新技术与新模式,推动工业互联网安全发展
  5. 又一百度杰出科学家离职,百度研究院成中国AI的黄埔军校?
  6. Android性能优化:手把手带你全面实现内存优化
  7. CentOS系统yum源使用报错:Error: Cannot retrieve repository metadata
  8. union matlab,[转载]intersect,unique,union在matlab中的用法(I lo
  9. pycharm的python解释器选择_pycharm中配置python解释器
  10. java snap7_Snap7 referance manual PDF 下载
  11. WinRAR和WinZIP 密码找回
  12. 安卓Aop 实现权限检测
  13. openssl 实现 aes 文件加密解密
  14. 经验分享帖 汇承HC-12无线模块的简单使用说明
  15. 【网络学习】对TortoiseSVN的基本了解及简单操作
  16. 大一计算机课如何做表格,电脑做表格的基本操作教程
  17. 【JAVAFX UI欣赏 之 滑条频谱】
  18. 星际文件系统(InterPlanetary File System,缩写IPFS)
  19. Genymotion-ARM-Translation.zip各安卓版本合集
  20. 荣耀V20设置国科大邮箱步骤

热门文章

  1. 2022-2028年中国体育用品行业投资分析及前景预测报告(全卷)
  2. php会话的销毁和退出,销毁PHP会话
  3. Python 标准库之 uuid
  4. Docker 入门系列(6)- Docker 互联
  5. 阿里云服务器部署项目
  6. Win10系统如何在防火墙里开放端口
  7. Hopfiled 神经网络实例解释
  8. LeetCode简单题之最长回文串
  9. 视频处理器为电池供电的设计提供4K视频编码
  10. js生成随机数函数,倒计时函数