Scala Try Catch Finally
Scala Try Catch Finally:
在Java中返回值优先级顺序:finally最高, try,catch 选其一,try中抛异常,返回catch,不抛异常,返回try,。
public class ExceptionDemo {
    public static void main(String[] args) {
        System.out.println(callMD());
    }
    public static int callMD() {
        try {
//            throw new Exception();
            return 1;
        } catch (Exception e) {
            return 2;
        } finally {
            return 3;
        }
    }
}
Scala模仿Java:
object ExceptionCatchDemo extends App {
  def testTryCatchFinally: Int = {
    try { throw new Exception();} catch { case _ => return 2 } finally { return 3 }
  }
  println(testTryCatchFinally)
}
运行结果:3
在Scala中返回值优先级顺序:try,catch 选其一,try中抛异常,返回catch,不抛异常,返回try,finally最低

补充: 从scala语言规范来看,try-catch-finally表达式也是有返回值的,且返回值主要是取决于try 和catch里的最后一行表达式,而finally被认为是做一些收尾的工作的,不应该在里面去改变返回结果。编译器在finally块最后自行增加了一个返回Unit类型的值(),编译器认为finally块里的逻辑是一个“procedure”,一定要满足Unit。
object ExceptionCatchDemo extends App {
  def testTryCatchFinally: Int = {
    try { throw new Exception() } catch { case _ => 2 } finally { 3 }
  }
  println(testTryCatchFinally)
}
运行结果:2
Scala Try Catch Finally的更多相关文章
- scala pattern matching
		
scala语言的一大重要特性之一就是模式匹配.在我看来,这个怎么看都很像java语言中的switch语句,但是,这个仅仅只是像(因为有case关键字),他们毕竟是不同的东西,switch在java中, ...
 - 【Scala】Scala之Control Structures
		
一.前言 前面学习了Scala的Numbers,接着学习Scala的Control Structures(控制结构). 二.Control Structures Scala中的控制结构与Java中的颇 ...
 - Spark记录-Scala异常与处理
		
Scala try-catch语句 Scala提供try和catch块来处理异常.try块用于包含可疑代码.catch块用于处理try块中发生的异常.可以根据需要在程序中有任意数量的try...cat ...
 - Scala Control Structures
		
Scala之Control Structures 一.前言 前面学习了Scala的Numbers,接着学习Scala的Control Structures(控制结构). 二.Control Struc ...
 - scala的异常处理try catch
		
object Test { def main(args: Array[String]) { try { val f = new FileReader("input.txt") } ...
 - scala基础篇---- Try finally不加catch的使用情形
		
普通的try-catch-finally Try{ } catch{//不加catch向上抛出异常 case _=> } finally{//一般是资源关闭 } 普通的try-finally ...
 - Scala快速概览
		
IDEA工具安装及scala基本操作 目录 一. 1. 2. 3. 4. 二. 1. 2. 3. 三. 1. 2. 3. 4. 5. 6. 7. 四. 1. (1) (2) (3) (4) (5) ( ...
 - Scala For Java的一些参考
		
变量 String yourPast = "Good Java Programmer"; val yourPast : String = "Good Java ...
 - Scala基础语法 (一)
		
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法. Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的. 我 ...
 
随机推荐
- Luogu-P1027 Car的旅行路线  已知三点确定矩形 + 最短路
			
传送门:https://www.luogu.org/problemnew/show/P1027 题意: 图中有n个城市,每个城市有4个机场在矩形的四个顶点上.一个城市间的机场可以通过高铁通达,不同城市 ...
 - hdu6333 Harvest of Apples 离线+分块+组合数学(求组合数模板)
			
Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K ...
 - 棋盘问题 POJ - 1321 [kuangbin带你飞]专题一 简单搜索
			
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别.要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C. ...
 - Django + Gunicorn + Nginx 部署之路
			
前言 最近,我已经成功将我的个人网站从 Flask 迁移到 Django 了,最早接触 Django 的时候大概是在 4 年前,我记得那个时候 Django 中的路由配置使用 正则 来进行的,但是我有 ...
 - docker 搭建自己的github
			
github 搭建: 自己搭建一个github网站(仓库) daocloud:公共hub搜索git下载github镜像 docker pull gitlab/gitlab-ce:8.7.0-r ...
 - git拉取分支
			
拉取仓库代码很简单,直接建立连接在pull下来就可以,如果想要拉取仓库中的某一个分支的话,则可能比较麻烦一点,下面简单介绍了一种拉取仓库分支的方法 1.先新建一个项目文件夹 2.git初始化git i ...
 - spring boot监听器的实现
			
spring boot监听器的实现 如下所示: import javax.servlet.ServletContextEvent; import javax.servlet.ServletContex ...
 - Linux下Mysql启动异常排查方案
			
遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/my ...
 - Azure虚拟机时间同步问题
			
场景描述:在Azure上新创建虚拟机默认是UTC时区的,因为业务在国内,所以要修改在CST注:协调世界时(英语:Coordinated Universal Time,法语:Temps Universe ...
 - 【学习笔记】第二章 python安全编程基础---正则表达式
			
一.python正则表达式 定义:正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式相匹配: 1.1RE模块:是python语言拥有全部的正则表达式功能的一个正则模块: 常见 ...