异常处理机制中的return关键字

Posted 秋风伊人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了异常处理机制中的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 

以上是关于异常处理机制中的return关键字的主要内容,如果未能解决你的问题,请参考以下文章

异常和TCP通讯

八月第四周

Java中的异常处理机制

C++ 异常机制分析

java异常处理机制

Java 异常处理