zoukankan      html  css  js  c++  java
  • 异常处理机制中的return关键字

    Java中,执行try-catch-finally语句需要注意:

    第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)

    第二:finally里面不建议放return语句,根据需要,return语句可以放在try和catch里面和函数的最后。可行的做法有四种:   

      1)return语句只在方法最后出现一次。   

      2)return语句仅在try和catch里面都出现。   

      3)return语句仅在try和方法最后都出现。   

      4)return语句仅在catch和方法的最后都出现。

    注意,除此之外的其他做法都是不可行的,编译器会报错。

      (1)如果程序运行到try成功时可以返回结果,则采用方法2。

      (2)如果程序运行到catch时(即中途出错时)无需再继续执行后面的代码了,则采取方法4。

      (3)如果程序运行到try或catch时还需要继续执行后面的代码,则采取方法1。

    package cn.javaoppday01;
    
    public class Text {
    
        public static void main(String[] args) {
               System.out.println(getResult());
        }
        public static int getResult(){
            int a =100;            
            try{
                  a++;   //此行执行的是try 原值为100,执行try的时候为101
                return a;              
            }finally{
                a++;   
            }
        }
    
    
        }
    结果为101
    package cn.day006;
    
    public class Test2 {
         public static void main(String[] args) {
                try{
                System.out.println(getResult());
                }catch(Exception e){
                    e.printStackTrace();
                    System.out.println("截获异常catch");
                }finally{
                    System.out.println("异常处理finally");
                }
            }
    
            @SuppressWarnings("finally")
            public static int getResult() throws Exception{
                int a =100;            
                try{                
                    a=a+10; 
                    throw new RuntimeException();
                }catch(Exception e){
                    System.out.println("截获异常并重新抛出异常");
                    throw new Exception();            
                }finally{
                    return a;
                }
            }
    }
    结果为:
    截获异常并重新抛出异常
    110
    异常处理finally

    即使在try块,catch块中存在return语句,finally块中的语句也会执行,finally 块中的语句不执行的唯一情况是,在异常处理代码中执行System.exit(1);

    在try--catch -finally 中 如果有return关键字的话  执行顺序如下:

    try --catch--finally -return 

  • 相关阅读:
    Vue中父子组件的通讯
    字符串svg代码转 base64 url
    Vue 中封装 websocket
    vue中使用Echarts,销毁原有的图表进行重新赋值
    Vue中常用表格(增删改查)
    刷新组件
    hdu1272小希的迷宫(并查集+判环)
    九余数定理
    Runtime Error可能的情况
    hdu2035 人见人爱A^B题解
  • 原文地址:https://www.cnblogs.com/3020815dzq/p/8527669.html
Copyright © 2011-2022 走看看