栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java try catch finally 与 return的关系

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java try catch finally 与 return的关系

java try catch finally 与 return的关系
  1. 新建 Test03

public class Test03 {

    private static int number = 0;

    public static void main(String[] args) {
//        System.out.println(test01());
//        System.out.println(test02());
//        System.out.println(test03());
//        System.out.println(test04());
        System.out.println(test05());
        System.out.println("number:" + number);
        System.out.println("------------");

    }

    
    public static int test01(){
        try{
            number = 5 / number;
            System.out.println("test01_try");
            return number;
        }catch (Exception e){
            System.out.println("test01_catch");
            return number++;
        }finally {
            System.out.println("test01_finally:" + number);
            return ++number;
        }
    }

    
    public static int test02(){
        try{
            number = 5 / number;
            System.out.println("test02_try");
            return number;
        }catch (Exception e){
            System.out.println("test02_catch");
            return number++;
        }finally {
            System.out.println("test02_finally:" + number);
            return number++;
        }
    }

    
    public static int test03(){
        try{
            number = 5 / number;
            System.out.println("test03_try");
            return number;
        }catch (Exception e){
            System.out.println("test03_catch");
            return ++number;
        }finally {
            System.out.println("test03_finally:" + number);
        }
    }

    
    public static int test04(){
        try{
            number = 5 / number;
            System.out.println("test04_try");
            return number;
        }catch (Exception e){
            System.out.println("test04_catch");
            return number++;
        }finally {
            System.out.println("test04_finally:" + number);
        }
    }

    
    public static int test05(){
        try{
            number = 5 / number;
            System.out.println("test04_try");
            return number;
        }catch (Exception e){
            System.out.println("test04_catch");
            return 1 == 2? 3:4;
        }finally {
            System.out.println("test04_finally:" + number);
        }
    }


}

总结:请依次执行 test01()、 test02() 、test03() test04()

  1. test01()得出:catch中的 return 执行了,但是最终执行了 finally 中的return并返回。
  2. test02()得出: return number++;时, 先返回再计算number的值
  3. test03()得出: return ++number; 先计算再返回值
  4. test04()得出: return number++;先计算了number 值,但返回时已经锚定了未计算之前的值
  5. test05()得出: return 1 == 2? 3:4; 返回4, 三目表达式先计算后返回
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号