首页 > 编程语言 >Java中的finally一定会被执行吗?

Java中的finally一定会被执行吗?

时间:2023-03-19 09:44:05浏览次数:52  
标签:return try finally 返回值 Java 执行

肯定不是。

首先,如果程序连try块都执行不到,那么finally块自然就不会执行到了。

有两个场景:

  • 在执行try块之前直接return
  • 在执行try块之前制造一个错误

只要进入try块,不管是给try块中造了个异常,还是在try块中进行return,finally块都是会执行的,只是执行时机有所差别。

finally执行时机

  • finally块执行在try块的return之前
  • finally块执行在catch块return的执行前。

finally块中的返回值

  • finally块不含返回值,只做改变变量值的操作,但是最终并不会改变变量值

因为Java程序会把try或者catch块中的返回值保留,也就是暂时的确认了返回值,然后再去执行finally代码块中的语句。等到finally代码块执行完毕后,如果finally块中没有返回值的话,就把之前保留的返回值返回出去。

  • finally中含有返回值

在finally块中进行return操作的话,则方法整体的返回值就是finally块中的return返回值。如果在finally块之后的方法内return,则return的值就是进行完上面的操作后的return值。

 

参考:

 

标签:return,try,finally,返回值,Java,执行
From: https://www.cnblogs.com/xfeiyun/p/17232488.html

相关文章

  • 110Js自执行函数
    JavaScript自执行函数(Self-ExecutingFunctions),也被称为立即执行函数(ImmediatelyInvokedFunctionExpressions,IIFE),是一种常见的JavaScript编程模式。这种模式的基本思路......
  • Java Web中端口被占的问题
    使用win+r打开命令行,输入下列代码查询被占用的端口netstat-ano|findstr8080 发现该端口被PID(进程ID)为20792的进程占用。打开任务管理器,点击详情信息,找到并结束该......
  • Java synchronized的实现原理
    通常在多线程执行的过程中,我们需要考虑一些线程安全的问题,而线程安全问题中最常用的解决策略之一就是“锁”。加锁的本质,就是为了解决在多线程场景中对于共享数据访问的......
  • java学习日记20230317-多态
    多态方法和对象爱过你具有多种形态,是面向对象的第三大特征,多态是建立在封装和继承的基础上;方法的重载体现多态方法的重写体现多态对象的多态一个对象的编译类型和......
  • java学习第一天
    java学习第一天第一个代码helloworld用cmd指令编译和运行Java文件Javac加Java文件名,编译javac编译文件会生成class文件Java运行class文件(无后缀)java程序运行机......
  • jlink打包javaFX应用和引用第三方库处理
    操作环境说明:操作系统:windows11(linux也可以参考本文操作)jdk版本:openjdk-17+35(理论上jdk9之后都可以按本文操作,具体是否可行,未验证)javaFX版本:javafx-sdk-17.0.2本......
  • 给我说说你对Java GC机制的理解?
    JVM的运行数据区方法区不止是存“方法”,而是存储整个class文件的信息,JVM运行时,类加载器子系统将会提取class文件里面的类信息,并将其存放在方法区中。例如类的名称、类......
  • 用Java代码验证三门问题
    三门问题(MontyHallproblem)亦称为蒙提霍尔问题,出自美国的电视游戏节目Let'sMakeaDeal。问题名字来自该节目的主持人蒙提·霍尔(MontyHall)。参赛者会看见三扇关闭......
  • JavaScript 数据类型详解
    原文链接:​   ​​https://note.noxussj.top/?source=51cto​​常见的ES5数据类型分为基本数据类型、引用数据类型两种。包含字符串、数字、对象、数组、函数、布尔值......
  • 你说你精通Java并发,那给我讲讲J.U.C吧
    J.U.C即java.util.concurrent包,为我们提供了很多高性能的并发类,可以说是java并发的核心。Concurrent包下所有类底层都是依靠CAS操作来实现,而sun.misc.Unsafe为我们提供了......