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

news2024/11/15 13:31:09

🐱‍🚀/背景

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

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

🐱‍🐉/实验

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

    @Test
    public 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方法的)

    @Test
    public 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.coloradmin.cn/o/706519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eclipse成立新工作组,华为和谷歌等是初始成员

日前一个供应商中立&#xff0c;并由社区支持的Visual Studio第三方开源市场Open VSX Registry迎来新工作组的成立。根据了解&#xff0c;开发者可以在Open VSX Registry当中的市场中自由上架、下载安装Visual Studio的各种第三方扩展。 随即Eclipse基金会宣告成立了Open VSX工…

前缀迷宫:解密力扣统计包含给定前缀的字符串

本篇博客会讲解力扣“2185. 统计包含给定前缀的字符串”的解题思路&#xff0c;这是题目链接。 本题的思路是&#xff1a;遍历字符串数组&#xff0c;判断遍历到的字符串是否包含给定前缀。 判断的方法是&#xff1a;使用strncmp函数&#xff0c;比较该字符串的前strlen(pref)…

【Linux】工具介绍——vim及gcc

前言 在Linux操作系统之中有很多使用的工具&#xff0c;我们可以用vim来进行程序的编写&#xff0c;然后用gcc来生成可执行文件&#xff0c;最终运行程序。本文来带大家了解vim和gcc&#xff0c;以及自动化构建工具Makefile&#xff0c;这三个工具的使用方法。 一、vim 1.vi…

Webpack打包arcgis js api 3.x纯html+JS+CSS项目

需求 小项目。纯HTMLJSCSS已经部署上线&#xff0c;但是没有做混淆加密&#xff0c;需要进行混淆加密 分析 目前代码里面需要混淆加密的有main.js&#xff0c;其他的不用混淆加密。所以只需要对main.js进行混淆加密就可&#xff0c;但是要保证混淆加密之后能够访问方法。由于…

C#中的自定义组件(单一组件和复杂组件)

简单的应用程序开发可能不必要制作组件&#xff0c;C#中丰富的组件足以应对绝大多数的开发设想。 稍微复杂一些的应用开发&#xff0c;或者平台开发&#xff0c;或者团队开发&#xff0c;不可避免地要涉及到基础库的搭建&#xff0c;其中会有很多用户组件的设计与开发。 组件分…

计算机视觉 - 理论 - 从卷积到识别

计算机视觉 - 理论入门 前言一&#xff0c;导论&#xff1a;二&#xff0c;卷积&#xff1a;图像去噪&#xff1a;常值卷积&#xff1a;高斯卷积&#xff1a;椒盐去噪&#xff1a;锐化程度&#xff1a; 三&#xff0c;边缘检测&#xff1a;图像信号导数&#xff1a;求导算子:图…

计算机网络-网络层上篇

目录 一、网络层概述 二、网络层提供的两种服务 &#xff08;一&#xff09;面向连接的虚电路服务 &#xff08;二&#xff09;无连接的数据报服务 &#xff08;三&#xff09;虚电路服务与数据报服务的比较 三、IPv4地址及其应用 &#xff08;一&#xff09;IPv4地址概…

【AI底层逻辑】——篇章4:大数据处理与挖掘

目录 引入 一、大数据概述 二、数据处理的流程&方法 1、数据收集——“从无到有” 2、数据加工——“从有到能用” 3、数据分析 三、大数据改变了什么 往期精彩&#xff1a; 引入 AI的表现依赖大数据。曾经一段时间&#xff0c;对于图像识别的准确率只能达到60%~70…

BUUCTF 还原大师 1

题目描述&#xff1a; 我们得到了一串神秘字符串&#xff1a;TASC?O3RJMV?WDJKX?ZM,问号部分是未知大写字母&#xff0c;为了确定这个神秘字符串&#xff0c;我们通过了其他途径获得了这个字串的32位MD5码。但是我们获得它的32位MD5码也是残缺不全&#xff0c;E903???4D…

Elasticsearch 集群日志收集搭建

Elasticsearch-7.2.0Logstash-7.2.0Kibana-7.2.0-Filebeat-7.6.0 第一台集群内网ip&#xff1a;10.0.0.223 ES配置文件&#xff1a;/es_data/es/elasticsearch-7.2.0/config/elasticsearch.yml ES启动命令&#xff1a;/es_data/es/elasticsearch-7.2.0/bin/elasticsearch cl…

报道|本科专业对收入影响巨大!最高以及最低收入的专业有这些

作者&#xff1a;Aimee Picchi 编者按 本文引用并翻译了发表在美国CBS的最新研究&#xff0c;希望能给刚高考完正在挑选大学以及专业的准大学生们一点帮助哦。 最新的研究发现&#xff0c;一个学生的专业和母校能明显地影响ta毕业四年后的收入水平。HEA Group的调查显示&#x…

Jenkins + gitlab 自动部署

1. 背景 作为后台开发&#xff0c;每次我们开发完或者修改一个bug后都要手动合并&#xff0c;打包或者连接服务器执行打包部署命令&#xff0c;每次手动操作&#xff0c;极大的影响了我们的开发效率&#xff0c;那么有没有一款工具能让我们只需要推送/合并代码到远端就能实现服…

【小沐学Python】Python实现Web服务器(Flask框架扩展:Flask-SQLAlchemy)

文章目录 1、简介2、安装3、开发3.1 数据库连接字符串3.2 SQLAlchemy参数设置3.3 SQLAlchemy字段类型3.4 SQLAlchemy列选项3.5 SQLAlchemy关系选项3.6 SQLAlchemy操作接口 4、代码测试4.1 用户管理4.2 用户角色管理4.3 学生管理4.4 图书管理 结语 1、简介 SQLAlchemy SQLALche…

windows下安装Visual Studio + CMake+OpenCV + OpenCV contrib+TensorRT

目录 1 安装visual studio 2 安装CMake 3 OpenCV源码安装 3.1 OpenCV源码下载 3.2 OpenCV contrib源码下载 3.3 安装OpenCV 3.4 安装OpenCV-crontrib 3.5 VS生成代码 4 环境配置 5 TensorRT安装 5.1 TensorRT安装 5.2 Python下安装TensorRT库 最近在研究windows系统…

Android学习_Mars老师之Mp3视频开发

实现的功能&#xff1a;开发一个可以播放音乐并同步显示歌词文件的APP. 成果展示&#xff1a; 总体设计图&#xff1a; 实现流程图 代码展示&#xff1a; AndroidManifest.xml <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:androi…

信道编码:MATLAB使用卷积编译码函数

信道编码&#xff1a;MATLAB 使用Conv函数 1. 相关函数 在进行卷积编码的过程中&#xff0c;使用的函数是convenc()函数和vitdec()函数&#xff0c;同时需要poly2trellis()函数。 1.1 poly2trellis()函数 先看poly2trellis()函数,用来生成卷积编码所需要的网表。 trellis …

svn commit 用法

转载   原文&#xff1a;https://blog.csdn.net/qq_39790633/article/details/103700391 使用svn进行代码的提交有两种方法&#xff1a;一种是通过TortoiseSVN客户端界面进行提交&#xff0c;另一种是通过svn commit指令提交。 方法一&#xff1a;通过TortoiseSVN客户端界面提…

【Python 随练】文本颜色设置

题目&#xff1a; 文本颜色设置 简介&#xff1a; 在本篇博客中&#xff0c;我们将学习如何在Python中设置文本的颜色。我们将介绍一个常用的库&#xff0c;并提供代码示例来演示不同颜色的设置。 问题分析&#xff1a; 我们需要在Python中设置文本的颜色&#xff0c;以增…

3.2迷宫求解

首先我没 看懂数据结构书上写得迷宫 求解 不过 不重要了 迷宫求解 需要先有个 迷宫 游戏 以下 是 Java写的 控制台迷宫游戏 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern;public class MazeGameJ {public static void main(St…

云原生|kubernetes|centos7下离线化部署kubesphere-3.3.2---基于kubernetes-1.22.16(从网络插件开始记录)

前言&#xff1a; kubesphere的离线化部署指的是通过自己搭建的harbor私有仓库拉取镜像&#xff0c;完全不依赖于外部网络的方式部署。 我的kubernetes集群是一个单master节点&#xff0c;双工作节点&#xff0c;总计三个节点的版本为1.22.16的集群。 该集群只是初始化完成了…