当前位置: 首页 > news >正文

try…catch…finally语句里return语句的执行顺序是怎样的?

第一种情况

try语句块里面有return语句,catch语句块和finally语句块里面没有return语句。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test1());}public static int test1() {int i =10;try {System.out.println("try语句");return --i;}catch (Exception e) {System.out.println("catch语句");}finally {System.out.println("finally语句");}return 0;}
}

运行结果如下:

try语句
finally语句
9

执行顺序:

1.先执行try块中语句,包括return语句中的表达式运算,但不返回。

2.执行finally语句块中的全部代码。

3.最后执行try块中return 返回。

第二种情况

try语句块和finally语句块里面有return语句,catch语句块里面没有return语句。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test2());}public static int test2() {int i =10;try {System.out.println("try语句");return --i;}catch (Exception e) {System.out.println("catch语句");}finally {System.out.println("finally语句");return --i;}}
}

运行结果如下:

try语句
finally语句
8

执行顺序:

1.先执行try块中语句,包括return语句中的表达式运算,但不返回。

2.执行finally语句块中的全部代码。

3.最后发现finally语句块中有return语句,从这里返回。

第三种情况

try语句块和catch语句块里面有return语句,finally语句块里面没有return语句,存在异常。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test3());}public static int test3() {int i =10;try {System.out.println("try语句");int j = 10 / 0;return --i;}catch (Exception e) {System.out.println("catch语句");return --i;}finally {System.out.println("finally语句");}}
}

 运行结果如下:

try语句
catch语句
finally语句
9

执行顺序:

1.先执行try块中语句,出现异常,catch捕获到异常。

2.执行catch块中语句,包括return语句中的表达式运算,但不返回。

3.执行finally语句块中的全部代码。

4.最后执行catch块中return 返回。

第四种情况

try语句块、catch语句块和finally语句块里面都有return语句,存在异常。

代码如下:

public class Main {public static void main(String[] args) {System.out.println(test4());}public static int test4() {int i =10;try {System.out.println("try语句");int j = 10 / 0;return --i;}catch (Exception e) {System.out.println("catch语句");return --i;}finally {System.out.println("finally语句");return --i;}}
}

 运行结果如下:

try语句
catch语句
finally语句
8

执行顺序:

1.先执行try块中语句,出现异常,catch捕获到异常。

2.执行catch块中语句,包括return语句中的表达式运算,但不返回。

3.执行finally语句块中的全部代码。

4.最后发现finally语句块中有return语句,从这里返回。

相关文章:

try…catch…finally语句里return语句的执行顺序是怎样的?

第一种情况 try语句块里面有return语句,catch语句块和finally语句块里面没有return语句。 代码如下: public class Main {public static void main(String[] args) {System.out.println(test1());}public static int test1() {int i 10;try {System.o…...

AIGC与虚拟现实(VR)的结合与应用前景

公主请阅 引言1. AIGC与VR的基本概念1.1 AIGC简介1.2 VR技术概述 2. AIGC在VR中的应用2.1 生成虚拟环境2.2 自动生成内容2.3 互动体验 3. AIGC与VR结合的应用案例3.1 教育培训3.2 娱乐与游戏3.3 心理治疗3.4 虚拟旅游 4. AIGC与VR结合的挑战4.1 技术限制4.2 用户体验4.3 数据隐…...

如何在visual studio中 生成 并 使用dll和lib文件

因为工作需求,要写lib和dll给别人使用。 使用visual studio2022 以函数 int getmyset() { return 0;} 为例子 首先 点击打开 visual studio 文件->新建->项目 选择windows桌面向导 选择应用程序类型为动态链接库.dll 分别创建MyDLL.h和MyDLL.cpp文件&a…...

「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件

Slider 和 Progress 是鸿蒙系统中的常用 UI 组件。Slider 控制数值输入,如音量调节;Progress 显示任务的完成状态,如下载进度。本文通过代码示例展示如何使用这些组件,并涵盖 进度条类型介绍、节流优化、状态同步 和 定时器动态更新。 关键词 Slider 组件Progress 组件节流…...

Iceoryx2:高性能进程间通信框架(中间件)

文章目录 0. 引言1. 主要改进2. Iceoryx2 的架构3. C示例代码3.1 发布者示例(publisher.cpp)3.2 订阅者示例(subscriber.cpp) 4. 机制比较5. 架构比较6. Iceoryx vs Iceoryx2参考资料 0. 引言 Iceoryx2 是一个基于 Rust 实现的开…...

构 造 器

我们创建了一个对象,在其中定义了属性,new一个对象,然后设置对应的属性,但是我们可以在new对象的时候,同时传入我们要设置的属性,这个时候就需要构造器。 特点 构造方法是一个特殊的成员方法,…...

草莓叶片病害识别与分类数据集(猫脸码客 第234期)

草莓叶片病害识别与分类数据集 草莓作为一种重要的经济作物,在全球范围内广泛种植。然而,草莓生产过程中常常受到各种病害的困扰,其中叶片病害尤为严重。为了有效识别、检测和分类草莓叶片病害,构建一个高质量的数据集是至关重要…...

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern)

微服务设计模式 - 断路器模式 (Circuit Breaker Pattern) 定义 断路器模式(Circuit Breaker Pattern)是云计算和微服务架构中的一种保护性设计模式,其目的是避免系统中的调用链出现故障时,导致系统瘫痪。通过断路器模式&#xff…...

HarmonyOS NEXT 应用开发实战(九、知乎日报项目详情页实现详细介绍)

在本篇博文中,我们将探讨如何使用 HarmonyOS Next 框架开发一个知乎日报的详情页,逐步介绍所用到的组件及代码实现。知乎日报是个小巧完整的小项目,这是一个循序渐进的过程,适合初学者和有一定开发经验的工程师参考。 1. 项目背景…...

lvgl 模拟器移植(V9)

1.模拟器代码下载 1.1:通过git 下载 github链接:GitHub - lvgl/lv_port_pc_visual_studio: Visual Studio projects for LVGL embedded graphics library. Recommended on Windows. Linux support with Wayland is work in progress.https://github.com…...

基于vue+neo4j 的中药方剂知识图谱可视化系统

前言 历时一周时间,中药大数据R02系统中药开发完毕,该系统通过scrapy工程获取中药数据,使用python pandas预处理数据生成知识图谱和其他相关数据,利用vuespringbootneo4jmysql 开发系统,具体功能请看本文介绍。 简要…...

(自用)机器学习python代码相关笔记

一些自存的机器学习函数和详细方法记录,欢迎指错。 前言:读取数据方法 import pandas as pd import pandas as pddf pd.read_csv(数据集.csv, header0) # header是从哪一行开始读起,一般是0,也可以取infer 一、数据处理&#…...

docker复现pytorch_cyclegan

1、安装docker 配置docker镜像 添加镜像源至docker engine 2、wsl2安装nvidia-docker 要在Ubuntu中安装NVIDIA Docker,需要满足以下条件: 确保主机已安装NVIDIA的CUDA驱动程序,并使用适用于您操作系统的正确版本。 wsl --update在Ubuntu…...

IDEA2024下安装kubernetes插件并配置进行使用

【1】安装插件 其实2024.2.3下默认已经安装了kubernetes插件,如果你发现自己IDEA中没有,在市场里面检索并下载即可。 【2】kubernetes配置 ① 前置工作 首先你要准备一个config文件和一个kubectl.exe 。 config文件类似如下: apiVersi…...

理解原子变量之二:从volatile到内存序-进一步的认识

目录 实例1 实例2 实例3 内存序中两个最重要的概念 补记 结论 实例1 看下面的例子&#xff1a;在vs2013中建立如下工程&#xff1a; #include <thread> #include <iostream> #include <chrono>bool done false;void worker(){std::this_thread::sle…...

DICOM标准:MR图像模块属性详解——磁共振成像(MR)在DICOM中的应用

目录 引言 磁共振成像&#xff08;MR&#xff09; 一、MR图像模块 二、MR图像属性描述 1、图像类型 (Image Type) 2、抽样每个象素 (Sampling per Pixel) 3、光度插值 (Photometric Interpretation) 4、位分配 (Bits Allocated) 结论 引言 数字成像和通信在医学&#xff08…...

Linux内核与用户空间

Linux内核与用户空间是Linux操作系统中的两个重要概念&#xff0c;它们各自承担着不同的功能和职责&#xff0c;并通过特定的机制进行交互。以下是对Linux内核与用户空间的详细解释&#xff1a; 一、Linux内核 定义&#xff1a;Linux内核是Linux操作系统的核心组件&#xff0c…...

计算机网络-以太网小结

前导码与帧开始分界符有什么区别? 前导码--解决帧同步/时钟同步问题 帧开始分界符-解决帧对界问题 集线器 集线器通过双绞线连接终端, 学校机房的里面就有集线器 这种方式仍然属于共享式以太网, 传播方式依然是广播 网桥: 工作特点: 1.如果转发表中存在数据接收方的端口信息…...

找树根和孩子c++

题目描述 给定一棵树&#xff0c;输出树的根root&#xff0c;孩子最多的结点max以及他的孩子 输入 第一行&#xff1a;n&#xff08;0<结点数<100&#xff09;&#xff0c;m&#xff08;0<边数<200&#xff09;。 以下m行&#xff1b;每行两个结点x和y&#xf…...

植物源UDP-糖基转移酶及其分子改造-文献精读75

植物源UDP-糖基转移酶及其分子改造 摘要 糖基化能够增加化合物的结构多样性,有效改善水溶性、药理活性和生物利用度,对植物天然产物的药物开发至关重要。UDP-糖基转移酶(UGTs)能够催化糖基从活化的核苷酸糖供体转移到受体形成糖苷键,植物中天然产物的糖基化修饰主要通过UGTs实…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档&#xff09;&#xff0c;如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下&#xff0c;风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

淘宝扭蛋机小程序系统开发:打造互动性强的购物平台

淘宝扭蛋机小程序系统的开发&#xff0c;旨在打造一个互动性强的购物平台&#xff0c;让用户在购物的同时&#xff0c;能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机&#xff0c;实现旋转、抽拉等动作&#xff0c;增…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...