注意:return的位置。。。

从这几个例子中可以看到,如果try之前没有有条件的return,则try..catch..finally语句块中的语句都是顺序执行(如果try中或者catch中
有return语句,那么先执行该return,然后执行finally, 如果finally中也有return, 该出的返回值会覆盖掉try 和 catch中的return值;
如果try..catch..finally语句块之后有return语句, try中、catch中、finally中都没有 (有条件的return 语句)先按顺序执行到finally,
最后return, 如果在try中或者catch中有 (有条件的return)那么先执行该return, 然后执行finally),否则即在进入try语句块之前返回就不会执行try语句//finaly 先执行, return 后执行
public      class      Test{   public      static      void      main(String[]      args){   System.out.print(tt());   }   public      static      int      tt(){   int      b      =      23;   try{   System.out.println("yes");   }catch(Exception      e){   System.out.println("error      :      "      +      e);   }finally {   if(b>25){   System.out.println("b>25      :      "+b);   }   System.out.println("finally");   }return  b+=88;        }
}//先执行第一个return, 然后执行finallypublic      class      Test{   public      static      void      main(String[]      args){   System.out.print(tt());   }   public      static      int      tt(){   int      b      =      23;   try{   System.out.println("yes");   return      b;   }catch(Exception      e){   System.out.println("error      :      "      +      e);   }finally {   if(b>25){   System.out.println("b>25      :      "+b);   }   System.out.println("finally");   return b+88;}}
}//在try中增加一个有条件的异常抛出,然后其中的return语句被忽略
public      class      Test{   public      static      void      main(String[]      args){   System.out.print(tt());   }   public      static      int      tt(){   int      b      =      23;   try{   System.out.println("yes"); if(b==23)  throw new Exception();return b+=123;}catch(Exception      e){   System.out.println("error      :      "      +      e);   }finally {   if(b>25){   System.out.println("b>25      :      "+b);   }   System.out.println("finally");   }return  b+=88;        }
}//finally中的返回值将覆盖try中的return返回值
public      class      Test{   public      static      void      main(String[]      args){   System.out.print(tt());   }   public      static      int      tt(){   int      b      =      23;   try{   System.out.println("yes");   return b;}catch(Exception      e){   System.out.println("error      :      "      +      e);   }finally {   if(b>25){   System.out.println("b>25      :      "+b);   }   System.out.println("finally");   return  b+=88;}            }
}//cathch中的return 也会被finally中的return覆盖
public      class      Test{   public      static      void      main(String[]      args){   System.out.print(tt());   }   public      static      int      tt(){   int      b      =      23;   try{   System.out.println("yes");   throw new Exception();}catch(Exception      e){   System.out.println("error      :      "      +      e);   return b;}finally {   if(b>25){   System.out.println("b>25      :      "+b);   }   System.out.println("finally");   return  b+=88;}           }
}//直接返回,下面不再执行try..catch...finally语句块
public      class      Test{   public      static      void      main(String[]      args){   System.out.print(tt());   }   public      static      int      tt(){   int      b      =      23;   if(b==23) return b;try{   System.out.println("yes");   throw new Exception();}catch(Exception      e){   System.out.println("error      :      "      +      e);   return b;}finally {   if(b>25){   System.out.println("b>25      :      "+b);   }   System.out.println("finally");   return  b+=88;}            }
}

转载于:https://www.cnblogs.com/hujunzheng/p/3817352.html

java中finally和return的执行顺序相关推荐

  1. Java 中 finally 与 return 的执行顺序详解

    java方法是在栈幀中执行,栈幀是线程私有栈的单位,执行方法的线程会为每一个方法分配一小块栈空间来作为该方法执行时的内存空间,栈幀分为三个区域: 1 . 操作数栈,用来保存正在执行的表达式中的操作数, ...

  2. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  3. java中子类继承父类程序执行顺序问题

    为什么80%的码农都做不了架构师?>>>    Java中,new一个类的对象,类里面的静态代码块.非静态代码.无参构造方法.有参构造方法.类的一般方法等部分,它们的执行顺序相对来说 ...

  4. java类初始化顺序_「漫画」Java中的父子类的执行顺序到底是怎么一回事?

    ----下课后---- 结论 类的加载顺序. (1) 父类静态代码块(包括静态初始化块,静态属性,但不包括静态方法) (2) 子类静态代码块(包括静态初始化块,静态属性,但不包括静态方法 ) (3) ...

  5. java 中的finally 语句块执行顺序

    2019独角兽企业重金招聘Python工程师标准>>> 参考博文1:https://www.ibm.com/developerworks/cn/java/j-lo-finally/ ...

  6. 可惜Java中没有yield return

    项目中一个消息推送需求,推送的用户数几百万,用户清单很简单就是一个txt文件,是由hadoop计算出来的.格式大概如下: uid caller 123456 12345678901 789101 12 ...

  7. java中异常与return

    抽时间整理了下java中异常与return,以前这块总是弄混淆,觉得还是写下来慢慢整理比较好.由于水平有限,仅供参考.废话不多说,直接上代码. 下面是两个方法: 1 public static int ...

  8. Asp.net 中 OnClientClick 与 OnClick 的执行顺序

    Asp.net 中 OnClientClick 与 OnClick 的执行顺序为:客户端的OnClientClick先执行,服务器端的OnClick后执行. 拓展:在执行完客户端的OnClientCl ...

  9. SQL server中的SELECT查询语句执行顺序

    各位大牛们好第一次写博客有点小激动!以后我会把自己的心得分享给大家,求各种评论 SQL server 中SELSECT查询语句的执行顺序如下: (8) SELECT   (9) DISTINCT (1 ...

最新文章

  1. element ui input 无法输入的解决办法
  2. emptyDir、hostPath以及local volume的不同
  3. 90%的开发都不太考虑这个,但只要出问题直接公司完蛋!
  4. python和c++哪个好学-C++和Python哪一个更好?
  5. ASP.NET 学习笔记_13 viewstate 和 cache
  6. 什么是7层负载均衡?
  7. 纯C++版的Faster-Rcnn(通过caffe自定义RPN层实现)
  8. Python并发编程:多线程-死锁现象与递归锁
  9. Eclipse插件开发入门
  10. 使用百度云服务器BCC搭建网站,过程记录
  11. Windows 录音机录制电脑声音、route 双网卡设置内外网共用
  12. 文后参考文献著录规则
  13. 二叉树的非递归遍历算法
  14. Context上下文到底是个什么东东?
  15. 京东云服务器做系统,京东云新一代自研云服务器4月上线,云实例承载能力提升2倍...
  16. nmap命令检查在线IP与在线IP的开放端口情况
  17. 分布式理论:CAP 是三选二吗?
  18. 2019/7/2 图书馆检索·真·简陋版(新人学习向)
  19. 离散信号(一) | 信号的采样和恢复+时域、频域采样定理
  20. 支持Oculus联网服务的加速器及工具

热门文章

  1. 0x30 java_终于找到了!有了它你就可以读懂字节码了!
  2. 企业微信_获取access_token
  3. (进阶篇)Redis6.2.0 集群 主从复制_故障解决_03
  4. SQL中where 1 = 1的用处
  5. (需求实战_01)_shell脚本 ftp协议下载文件
  6. 第九篇:Spring Boot整合Spring Data JPA_入门试炼02
  7. python每天定时9点执行_[求助]关于twisted框架,如何每天定时执行一个scrapy爬虫...
  8. vba mysql连接字符串_分享一个VBA连接mysql数据库的方法
  9. C语言 二维数组行数和列数计算 - C语言零基础入门教程
  10. 长安渝北工厂机器人_长安UNI-T智能工厂:机器人、激光焊, 一分钟一台车