博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中finally和return的执行顺序
阅读量:6974 次
发布时间:2019-06-27

本文共 4033 字,大约阅读时间需要 13 分钟。

注意: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;      }               }}

 

转载地址:http://mzrsl.baihongyu.com/

你可能感兴趣的文章
使用git进行版本管理
查看>>
数据结构--树,二叉树
查看>>
MySQL优化—工欲善其事,必先利其器之EXPLAIN
查看>>
mysql性能优化学习笔记
查看>>
禁止 favicon.ico 请求
查看>>
CSS隐藏元素的N种实现方式。
查看>>
Hadoop概念学习系列之为什么hadoop/spark执行作业时,输出路径必须要不存在?(三十九)...
查看>>
UVa567_Risk(最短路)(小白书图论专题)
查看>>
Redis Sentinel实现的机制与原理详解
查看>>
nginx php-fpm安装手记
查看>>
spring注解工具类AnnotatedElementUtils和AnnotationUtils
查看>>
[转]简单介绍如何使用robotium进行自动化测试
查看>>
post和get的区别?
查看>>
android 滚动视图(ScrollView)
查看>>
无限级别菜单下拉
查看>>
Linux oprofile命令
查看>>
HashMap 实现原理(复习)
查看>>
Leetcode: LFU Cache && Summary of various Sets: HashSet, TreeSet, LinkedHashSet
查看>>
JAVA数据结构--队列
查看>>
[zz]配置RHEL6使用CentOS6的yum源
查看>>