返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/124634.html(转载时请注明来源链接)

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

猜你喜欢
  • Java基础之finally语句与return语句详解
    目录一、return语句执行顺序二、覆盖问题三、异常情况四、finally语句一定会被执行吗?一、return语句执行顺序 finally语句是在return语句执行之后,retur...
    99+
    2024-04-02
  • try、finally与return语句在Java中哪个先执行
    今天就跟大家聊聊有关try、finally与return语句在Java中哪个先执行,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Demo1public class Test { p...
    99+
    2023-05-31
    java try finally
  • 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
  • Python基础之条件语句详解
    目录一、环境介绍二、条件判断介绍三、if语句的使用四、if判断的运算符五、学习小结一、环境介绍 Python版本Python 3.8.8 ( Pycharm版本2021.1.2 二、...
    99+
    2024-04-02
  • python入门语句基础之if语句、while语句
    目录一、if语句二、while语句一、if语句 if 语句让你能够检查程序的当前状态,并据此采取相应的措施。if语句可应用于列表,以另一种方式处理列表中的大多数元素,以及特定值的元素...
    99+
    2024-04-02
  • 深入浅析Java中finally语句与return的执行顺序
    深入浅析Java中finally语句与return的执行顺序?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。(1)try语句没有被执行到,如在try语句之前就返回了,这样fina...
    99+
    2023-05-31
    java return finally
  • python基础详解之if循环语句
    前言 还记得这个九九乘法表吗,这次课后相信你可以用代码给你的小弟弟妹妹们变出这份“葵花宝典”。 循环 如果要把循环翻译成机器语言,那他对应的可以是 for…in… ,循环就像是一个...
    99+
    2024-04-02
  • MySQL基础教程之DML语句详解
    目录DML 语句1.插入记录2.更新记录3.简单查询记录4.删除记录5.查询记录详解(DQL语句)5.1.查询不重复的记录5.2.条件查询5.3.聚合查询5.4.排序查询5.5.li...
    99+
    2024-04-02
  • C语言基础解析之分支与循环语句
    目录- if语句:if(表达式)悬空else问题- switch语句要注意的细节switch中的的default子句:- while循环语法结构- for循环语法结构- do whi...
    99+
    2024-04-02
  • Python基础之函数与控制语句
    目录前言函数判断循环总结前言 今天我们简单说下Python函数和控制语句,大纲如下: 函数 “脏活累活交给函数来做”,首先,看看Python中定义函数的方法...
    99+
    2024-04-02
  • python基础之循环语句
    目录循环语句单分支如何使用双分支结构多分支的使用While 循环拳击游戏循环:总结循环语句 多分支 选择流程 If-else语句 单分支如何使用 # 单分支表...
    99+
    2024-04-02
  • MySQL基础语句
    查看语句 查看所有数据库 show databases; 查看表结构 desc table_name; 查看库中所有表 show tables; 查看建表语句 show create table ; 新建表语...
    99+
    2021-02-22
    MySQL基础语句
  • Oracle基础语句
    1、创建表create table IT_EMPLOYEES(ENPLOYEES_ID NUMBER(6) NOT NULL UNIQUE,FIRST_NAME VARCHAR2(20),LAST_...
    99+
    2024-04-02
  • python函数中 return语句 之
    return语句用于退出函数,向调用方返回一个表达式。return在不带参数的情况下(或者没有写return语句), 默认返回None。None是一...
    99+
    2023-01-31
    语句 函数 python
  • 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语句 循环语句
  • Java的try、catch、finally语句中有return各类情况是什么
    本篇内容主要讲解“Java的try、catch、finally语句中有return各类情况是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java的try、catch、finally语句中有...
    99+
    2023-06-16
  • C语言超详细讲解循环与分支语句基础
    目录写在开始1. 分支语句1.1 if语句1.2 switch2. 循环语句2.1 while()语句2.2 do while()语句2.3 for 语句for语句中表达式的省略br...
    99+
    2024-04-02
  • SQL Server基础语句讲解
    1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select into b from a where 1<>1(仅用于SQlServer)...
    99+
    2024-04-02
  • MySQL基础:DML语句
    SQL语言大致分为`DCL`、`DDL`、`DML`三种,本文主要介绍`MySQL 5.7`版本的`DCL`语句。 blog:https://www.cnblogs.com/Rohn/ SQL语言大致...
    99+
    2018-11-18
    MySQL基础:DML语句
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作