【Java】直接return 会触发try-catch 里面的finally的方法么

🐱‍🚀/背景

try-catch 主要的作用是捕获异常,那么程序没有异常,finally里面代码能否执行?
特别是如果我们前面进行了加锁等操作,没有释放锁,那不是会造成业务逻辑问题,

先说结论: 会执行,无论异常与否,还是直接return

🐱‍🐉/实验

实践出真知,写个demo跑一下就好了。

    @Testpublic void temp() {try {log.info("start.");if (true) {return;}log.info("finished.");} catch (Exception e) {log.error(e.getMessage(), e);} finally {log.info("finally xxx.");}}

执行结果,start 和 finally都打印了,证明finally 方法是一定会执行的,那么break,continue呢?
在这里插入图片描述
继续实验,简单一点就不做Exception处理了(明确异常最后是会走finally方法的)

    @Testpublic void temp() {int count = 0;for (int i = 0; i < 10; i++) {try {if (i % 2 == 0) {continue;}count++;if (i == 5) {break;}} finally {log.info("i" + i);}}log.info("finish" + count);}

在这里插入图片描述

结论:continue ,break 执行之后finally 都会执行,但是break中断之后,整个没有执行,finally 也就不会执行

try {}方法里面的内容,只要开始执行,无论结果(异常、返回、正常执行),finally都会执行

🥨/总结

finally的优先级高,加锁之后,尽量后续的代码全部用try包裹,在finally里面解锁,确保解锁成功

finally里面也可以执行逻辑代码,需要确保执行的时候,可以考虑使用finally方法

但是要注意 如果finally里面出现异常,,则后续的代码也不会执行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/2346.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle只读打开数据库

客户经常有这样的需求&#xff0c;数据库已迁移&#xff0c;但还是希望原库可以打开&#xff0c;就只能只读模式打开了 方法一 SYSorcl> STARTUP OPEN READ ONLY; ORACLE instance started. Total System Global Area 4.0086E10 bytes Fixed Size 22549…

大体积mbtiles影像地图文件用什么软件浏览?

mbtiles格式简称mbt&#xff0c;是一种影像地图文件。PC端和手机端都有软件可以加载留着mbt格式的影像地图。 电脑桌面端 电脑端上的软件可以使用“图新地球”&#xff0c;直接把mbt文件拖到地图上即可&#xff0c;非常简便。 手机端 可以从华为应用商店下载“外业精灵”app…

【Linux】 -- TCP协议 (一)

TCP协议 Tcp协议可靠性冯诺依曼体系结构 TCP的协议格式序号与确认序号窗口大小六个标志位 确认应答机制 &#xff08;ACK&#xff09;超时重传机制连接管理机制 Tcp协议 TCP全称为 “传输控制协议”&#xff08;Transmission Control Protocol&#xff09; TCP协议被广泛应用…

基于深度学习的高精度动物园动物检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度动物园动物&#xff08;水牛、斑马、大象、水豚、海龟、猫、奶牛、鹿、狗、火烈鸟、长颈鹿、捷豹、袋鼠、狮子、鹦鹉、企鹅、犀牛、羊、老虎&#xff09;检测识别系统可用于日常生活中或野外来检测与定位动物园动物&#xff0c;利用深度学…

【需求实现】Tensorflow2的曲线拟合(三):Embedding层

文章目录 导读Embedding的维度问题Embedding的输入输出比较容易踩的坑input_shape与input_length的对应关系built属性 导读 这是填曲线拟合第一篇的坑&#xff0c;有关Embedding层的问题。 Embedding的维度问题 首先是上次我们提到的Embedding层&#xff0c;他确实能够做到将…

6.4.2 文件隐藏属性

chattr指令只能在Ext2/Ext3/Ext4的 Linux 传统文件系统上面完整生效&#xff0c; 其他的文件系统可能就无法完整的支持这个指令了&#xff0c;例如 xfs 仅支持部份参数而已。 chattr &#xff08;设置文件隐藏属性&#xff09; 这个指令很重要&#xff0c;在系统的数据安全上面…

uniapp小程序订单页面UI

前言 之前用模板写了订单页面&#xff0c;由于需求改了导致这个页面做更新麻烦&#xff0c;弄了一下午&#xff0c;索性全部删除了自己写了&#xff0c;上面的tabs用的是b-ui框架写的&#xff0c;其他的都是原生写法。 &#x1f64f;如果这篇文章对你有帮助还请收藏点赞关注&…

第一个python程序

一、pycharm快捷键 二、第一个python程序 """ """ 需求&#xff1a;输入圆的半径&#xff0c;计算圆的周长和面积&#xff0c;结果保留两位小数&#xff0c;对圆的半径和输入进行有效性校验 """ """ 写代码的规…

线性代数基础--矩阵

矩阵 矩阵是由排列在矩形阵列中的数字或其他数学对象组成的表格结构。它由行和列组成&#xff0c;并且在数学和应用领域中广泛使用。 基本概念 元素&#xff1a;矩阵中的每个数字称为元素。元素可以是实数、复数或其他数学对象。 维度&#xff1a;矩阵的维度表示矩阵的行数和…

.NET6创建Windows服务

之前的文章已经写过了创建Windows服务。 C#创建Windows服务_c# 创建windows服务_故里2130的博客-CSDN博客 不过之前使用的是.NET Framework创建的Windows服务。现在已经2023年了&#xff0c;其中vs2022有新的方法去创建Windows服务&#xff0c;本次使用.NET6创建Windows服务。…

自动化测试框架[Cypress概述]

目录 前言&#xff1a; Cypress简介 Cypress原理 Cypress架构图 Cypress特性 各类自动化测试框架介绍 Selenium/WebDriver Karma Karma的工作流程 Nightwatch Protractor TestCafe Puppeteer 前言&#xff1a; Cypress是一个基于JavaScript的端到端自动化测试框架…

抖音seo矩阵系统源码|需求文档编译说明(三)

文章目录 批量剪辑工具技术源码框架 短视频SEO矩阵系统源码技术开发&#xff0c;遵循步骤抖音矩阵系统源码搭建功能 开发语言及开发环境 抖音账号矩阵系统源码搭建包括以下步骤 概要 ​​抖音seo源码&#xff0c;抖音矩阵系统如何使用源码二次开发&#xff0c;开发的功能有那些…