记录一下看了Java异常try{}catch{}中的return机制之后做的一些测试,以及额外的补充总结

代码:

package com.atguigu.mvc.test;

import org.junit.Test;

/**
 * @author 
 * @create 2023-04-26 20:37
 * 研究 Java异常try{}catch{}中的return机制
 */
public class tryCatchTest {

    public static String test1(){
        String str="start";
        try {
            return str="try return";//这里定义为正常return
        } catch (Exception e) {
            return str="catch return";//这里定义为异常return
        }finally {
            return str="finally return";//这里定义为最终return
        }
        //总结1:最终return和方法return是互斥的,即在一个方法中,最终return和方法return只能写一个,否则编译无法通过(或者IDE会报错)
        //return "method return";//这里定义为方法return
    }

    public static String test2(){
        String str="start";
        try {
            return str="try return";//这里定义为正常return
        } catch (Exception e) {
            return str="catch return";//这里定义为异常return
        }
//        }finally {
//            return str="finally return";//这里定义为最终return
//        }
        //总结2:当正常return和异常return都有的时候,最终return可有可无,但是方法return一定不能有,否则报错
        //return "method return";//这里定义为方法return
    }

    public static String test3(){
        String str="start";
        try {
            //return str="try return";//这里定义为正常return
        } catch (Exception e) {
            //return str="catch return";//这里定义为异常return
        }finally {
            return str="finally return";//这里定义为最终return
        }
        //总结3:当有最终return的时候,正常return和异常return可有可无
        //return "method return";//这里定义为方法return
    }


    public static String test4(){
        String str="start";
        try {
            return str="try return";//这里定义为正常return
        } catch (Exception e) {
            //return str="catch return";//这里定义为异常return
        }
//        finally {
//            return str="finally return";//这里定义为最终return
//        }
        //总结4:当没有最终return的时候,要么一定要有正常return和异常return,要么一定要有方法return
        //总结5:当没有最终return,而有方法return的时候,正常return和异常return最多存在一个
        return "method return";//这里定义为方法return
    }

    public static String test5(){
        String str="start";
        try {
            int i=1/0;
            return str="try return";//这里定义为正常return
        } catch (Exception e) {
            //return str="catch return";//这里定义为异常return
        }
//        finally {
//            return str="finally return";//这里定义为最终return
//        }
        //总结4:当没有最终return的时候,要么一定要有正常return和异常return,要么一定要有方法return
        //总结5:当没有最终return,而有方法return的时候,正常return和异常return最多存在一个
        return "method return";//这里定义为方法return
    }

    /**
     * 测试返回值
     * @param str
     */
    public static void main(String[] str){
        //总结6:当有正常return和方法return时,正常执行时返回的是try return
        //System.out.println(test4());

        //总结7:当有正常return和方法return时,异常执行时返回的是method return
        //System.out.println(test5());

        //总结8:当有正常return、方法return、最终return时,返回finally return
        System.out.println(test1());
    }
}

汇总:

  1. 总结1:最终return和方法return是互斥的,即在一个方法中,最终return和方法return只能写一个,否则编译无法通过(或者IDE会报错)
  2. 总结2:当正常return和异常return都有的时候,最终return可有可无,但是方法return一定不能有,否则报错
  3. 总结3:当有最终return的时候,正常return和异常return可有可无
  4. 总结4:当没有最终return的时候,要么一定要有正常return和异常return,要么一定要有方法return
  5. 总结5:当没有最终return,而有方法return的时候,正常return和异常return最多存在一个
  6. 总结6:当有正常return和方法return时,正常执行时返回的是try return
  7. 总结7:当有正常return和方法return时,异常执行时返回的是method return
  8. 总结8:当有正常return、方法return、最终return时,返回finally return