广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java基础之finally语句与return语句详解
  • 925
分享到

Java基础之finally语句与return语句详解

2024-04-02 19:04:59 925人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、return语句执行顺序二、覆盖问题三、异常情况四、finally语句一定会被执行吗?一、return语句执行顺序 finally语句是在return语句执行之后,retur

一、return语句执行顺序

finally语句是在return语句执行之后,return语句返回之前执行的


package exception;

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(func());
    }

    public static int func(){
        int a = 10;
        try{
            System.out.println("try中的代码块");
            return a += 10;
        }catch (Exception e){
            System.out.println("catch中的代码块");
        }finally {
            System.out.println("finally中的代码块");
            if(a > 10){
                System.out.println("a > 10,"+"a="+a);
            }
        }
        return a += 50;
    }
}

运行结果:

try中的代码块
finally中的代码块
a > 10,a=20
20

注意:

a > 10,a=20的结果说明了return a += 10已经执行了,但是没有直接返回,而是先去执行finally语句的内容,然后再去返回结果

二、覆盖问题

finally块中的return语句会覆盖try块的return返回


package exception;

public class Demo07 {
    public static void main(String[] args) {
        System.out.println(func());
    }

    public static int func(){
        int a = 10;
        try{
            System.out.println("try中的代码块");
            return a += 10;
        }catch (Exception e){
            System.out.println("catch中的代码块");
        }finally {
            System.out.println("finally中的代码块");
            if(a > 10){
                System.out.println("a>10,"+"a="+a);
            }
            return 100;
        }
    }
}

运行结果:

try中的代码块
finally中的代码块
a>10,a=20
100

注意:

(1)如果try中有return语句,finally中也有return语句,最终执行的是finally中的return语句
(2)如果finally代码块中写了return语句,那么finally之后的return语句就变成不可到达的语句,需要注释掉,否则编译不过

如果finally语句没有return语句覆盖返回值,那么原来的返回值可能因为finally里的修改而改变也有可能不变

(1)测试1


package exception;

public class Demo08 {
    public static void main(String[] args) {
        System.out.println(func());
    }

    public static int func(){
        int a = 10;
        try{
            System.out.println("try中的代码块");
            return a += 20;
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("catch中的代码块");
        }finally {
            System.out.println("finally中的代码块");
            a  += 20;
            if(a > 10){
                System.out.println("a > 10,a="+a);
            }
            a += 20;
        }
        return 200;
    }
}

运行结果:

try中的代码块
finally中的代码块
a > 10,a=50
30

注意:

对于基本数据类型来说,finally中对返回值的修改不会影响try中的返回变量的值

(2)测试2


package exception;

import java.util.HashMap;
import java.util.Map;

public class Demo09 {
    public static void main(String[] args) {
        System.out.println(getMap().get("KEY").toString());
    }

    public static Map<String,String> getMap(){
        Map<String,String> map = new HashMap<>();
        map.put("KEY","INIT");
        try{
            map.put("KEY","try");
            return map;
        }catch (Exception e){
            e.printStackTrace();
            map.put("KEY","catch");
        }finally {
            map.put("KEY","finally");
            map = null;
        }
        return map;
    }
}

运行结果:

finally

注意:

对于引用数据类型来说,finally中对返回值的修改会影响try中的返回变量的值

三、异常情况

try块中的return语句在异常的情况下不会被执行


package exception;

public class Demo10 {
    public static void main(String[] args) {
        System.out.println(func());
    }

    public static int func(){
        int a = 10;
        try{
            System.out.println("try中的代码块");
            a = a/0;
            return a += 50;
        }catch (Exception e){
            a += 15;
            System.out.println("catch中的代码块");
        }finally {
            System.out.println("finally中的代码块");
            if(a > 20){
                System.out.println("a > 20,a ="+a);
            }
            a += 10;
        }
        return a;
    }
}

运行结果:

try中的代码块
catch中的代码块
finally中的代码块
a > 20,a =25
35

注意:

try语句块中发生异常,try语句异常后的内容不会执行,return语句也不会执行,执行的是捕获到的catch语句块和finally语句块

try中发生异常时,return写在catch语句中


package exception;

public class Demo11 {
    public static void main(String[] args) {
        System.out.println(func());
    }

    public static int func(){
        int a = 10;
        try{
            System.out.println("try中的代码块");
            a = a /0;
            return a += 10;
        }catch (Exception e){
            System.out.println("catch中的代码块");
            return a += 15;
        }finally {
            System.out.println("finally中的代码块");
            if (a > 10){
                System.out.println("a > 10, a = "+a);
            }
            a += 50;
            System.out.println(a);
        }
    }
}

运行结果:

try中的代码块
catch中的代码块
finally中的代码块
a > 10, a = 25
75
25

注意:

try中发生异常之后,catch中的return语句先执行,确定了返回值之后(保存起来,finally中的语句对返回值无影响)再去finally语句块,执行完之后再返回a的值,finally中对a的修改对返回值无效

四、finally语句一定会被执行吗?

(1)当程序进入try语句之前就出现异常时,会直接结束

(2)try语句块中有强制退出时也不会执行finally语句块中的代码


System.exit(0);

代码示例:


package exception;

public class Demo12 {
    public static void main(String[] args) {
        int a = 10;
        try{
            System.out.println("try block");
            System.exit(0);
        }catch (Exception e){
            System.out.println("catch block");
        }finally {
            System.out.println("finally block");
        }
    }
}

运行结果:

try block

到此这篇关于Java基础之finally语句与return语句详解的文章就介绍到这了,更多相关java finally语句与return语句内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java基础之finally语句与return语句详解

本文链接: https://www.lsjlt.com/news/124634.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java基础之finally语句与return语句详解
    目录一、return语句执行顺序二、覆盖问题三、异常情况四、finally语句一定会被执行吗?一、return语句执行顺序 finally语句是在return语句执行之后,retur...
    99+
    2022-11-12
  • try、finally与return语句在Java中哪个先执行
    今天就跟大家聊聊有关try、finally与return语句在Java中哪个先执行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Demo1public class Test { p...
    99+
    2023-05-31
    java try finally
  • Python基础之条件语句详解
    目录一、环境介绍二、条件判断介绍三、if语句的使用四、if判断的运算符五、学习小结一、环境介绍 Python版本Python 3.8.8 ( Pycharm版本2021.1.2 二、...
    99+
    2022-11-12
  • python入门语句基础之if语句、while语句
    目录一、if语句二、while语句一、if语句 if 语句让你能够检查程序的当前状态,并据此采取相应的措施。if语句可应用于列表,以另一种方式处理列表中的大多数元素,以及特定值的元素...
    99+
    2022-11-10
  • Java 基础 之 分支语句
    转载于 : http://www.verejava.com/id=16992614948219 import java.util.Scanner;public class Statement...
    99+
    2023-06-02
  • Java 基础 之 条件语句
    转载于 : http://www.verejava.com/id=16992610131518 import java.util.Scanner;public class Statement...
    99+
    2023-06-02
  • MySQL基础教程之DML语句详解
    目录DML 语句1.插入记录2.更新记录3.简单查询记录4.删除记录5.查询记录详解(DQL语句)5.1.查询不重复的记录5.2.条件查询5.3.聚合查询5.4.排序查询5.5.li...
    99+
    2022-11-12
  • python基础详解之if循环语句
    前言 还记得这个九九乘法表吗,这次课后相信你可以用代码给你的小弟弟妹妹们变出这份“葵花宝典”。 循环 如果要把循环翻译成机器语言,那他对应的可以是 for…in… ,循环就像是一个...
    99+
    2022-11-12
  • 深入浅析Java中finally语句与return的执行顺序
    深入浅析Java中finally语句与return的执行顺序?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。(1)try语句没有被执行到,如在try语句之前就返回了,这样fina...
    99+
    2023-05-31
    java return finally
  • C语言基础解析之分支与循环语句
    目录- if语句:if(表达式)悬空else问题- switch语句要注意的细节switch中的的default子句:- while循环语法结构- for循环语法结构- do whi...
    99+
    2022-11-12
  • Python基础之函数与控制语句
    目录前言函数判断循环总结前言 今天我们简单说下Python函数和控制语句,大纲如下: 函数 “脏活累活交给函数来做”,首先,看看Python中定义函数的方法...
    99+
    2022-11-10
  • python基础之循环语句
    目录循环语句单分支如何使用双分支结构多分支的使用While 循环拳击游戏循环:总结循环语句 多分支 选择流程 If-else语句 单分支如何使用 # 单分支表...
    99+
    2022-11-12
  • java学习之switch语句与循环语句
    switch语句int a = 1,b =2; switch(a+b){ case 1: System.out.print(1); case 3: System.out.print(3); case 4: System.o...
    99+
    2014-05-20
    java switch语句 循环语句
  • C语言超详细讲解循环与分支语句基础
    目录写在开始1. 分支语句1.1 if语句1.2 switch2. 循环语句2.1 while()语句2.2 do while()语句2.3 for 语句for语句中表达式的省略br...
    99+
    2022-11-13
  • SQL Server基础语句讲解
    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select into b from a where 1<>1(仅用于SQlServer)...
    99+
    2022-10-18
  • Python基础之python循环控制语句break/continue详解
    Python中提供了两个关键字用来控制循环语句,分别是break和continue break在条件成立时,不会执行循环中的后续代码,并且会停止整个循环 continue在条件成立时...
    99+
    2022-11-12
  • Java的try、catch、finally语句中有return各类情况是什么
    本篇内容主要讲解“Java的try、catch、finally语句中有return各类情况是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的try、catch、finally语句中有...
    99+
    2023-06-16
  • Python基础中的的if-else语句详解
    本节主要讲的是if条件不满足时,也可以给提示,就是走else 必须先做类型转换 另一种写法 if-else语句else后的冒号,必须是英文的… 下边为之前...
    99+
    2022-11-13
  • Python基础之with语句和上下文管理器详解
    目录1. with语句的使用2. 上下文管理器3. 上下文管理器的另外一种实现方式1. with语句的使用 基础班向文件中写入数据的示例代码: # 1、以写的方式打开文件 f =...
    99+
    2023-05-18
    Python with语句 Python with Python 上下文管理器
  • Java基础的控制语句怎么
    这篇文章主要介绍了Java基础的控制语句怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java基础的控制语句怎么使用文章都会有所收获,下面我们一起来看看吧。1.分类怎么接收用户键盘输入java.util...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作