在有try-catch-finally的方法存在返回值问题

GD32F303片内FLASH实战:从地址映射到数据持久化存储 本文详细介绍了GD32F303片内FLASH的实战应用,从地址映射到数据持久化存储的全过程。通过解析FLASH的基础特性、安全操作区域规划、擦除写入读取的三重奏操作,以及工程化进阶技巧,帮助开发者高效利用片内FLASH进行数据存储。文章还提供了调试技巧和常见问题解决方案,特别适合嵌入式开发者在实际项目中应用。 阅读详情

    今天在写代码涉及到try-catch-finally中,io流需要关闭,在finally里面进行处理。那我的返回值放在哪里呢? try里面还是 try外面

这里写了一个demo,供参考使用:

public class Test {

    public static void main(String[] args) throws Exception {
        Test t = new Test();
//        System.out.println(t.t1());
//        System.out.println(t.t2());
        System.out.println(t.t3());
    }

    public String t1() throws Exception{
        try{

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            System.out.println("222");
        }
        Thread.sleep(1000);
        System.out.println("111");
        return "1";
    }

    public String t2() throws Exception{
        try{
            System.out.println("333");
            return "2";
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //在 return "2" 之前执行
            Thread.sleep(1000);
            System.out.println("222");
        }
        System.out.println("111");
        return "1";
    }

    public String t3() throws Exception{
        try{
            System.out.println("333");
            return "2";
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //在 return "2" 之前执行
            System.out.println("222");
            return "3";
        }
    }

    //这是我写 导入Excel 实现
    public String t4() throws Exception{
        try{
            return "2";
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //在 return "2" 之前执行
            System.out.println("222");
        }
    }
}

依次将,首先看 t1方法打印:

public String t1() throws Exception{
        try{

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            System.out.println("222");
        }
        Thread.sleep(1000);
        System.out.println("111");
        return "1";
    }

先打印finally里面的代码,再打印try-catch-finally 之后的代码,返回值为1

看t2方法打印如下:

    public String t2() throws Exception{
        try{
            System.out.println("333");
            return "2";
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //在 return "2" 之前执行
            Thread.sleep(1000);
            System.out.println("222");
        }
        System.out.println("111");
        return "1";
    }

结果的返回值为2 说明是在try里面返回的,说明 return "1" 不会走了,这里还是按照代码的顺序来执行的,但是 finally里面的语句是在 打印333之后执行的,也就说明finally的代码是在return返回之前执行 ,说明 finally是在return之前执行的(return一定在try里面).

 

那么这样看的话t3方法 打印就好解释了:

    public String t3() throws Exception{
        try{
            System.out.println("333");
            return "2";
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //在 return "2" 之前执行
            System.out.println("222");
            return "3";
        }
    }

finally里面有返回值,但finally是在return之前执行,那么 finally 就直接返回。

 

t4方法不能运行:这就是我之前犯的问题,在try里面返回 finally 控制流关闭 外面还是要有一个return值。为什么要有值呢?

如果try里面的代码抛出异常了,就不会走 try里面的return "2" 了 所以要在外面加一个 return

public String t4() throws Exception{
    try{
        int c = 1/0; //这里抛出异常了 后面果断不执行了呗s
        return "2";
    }catch(Exception e){
        e.printStackTrace();
    }finally{
        //在 return "2" 之前执行
        System.out.println("222");
    }
    return  null;
}

综上,try里面存在异常的可能情况 会走 catch  那么可以在catch里面return ,否则在try里面return 即可

如下:

    public String t4() throws Exception{
        try{
            int c = 1/0;
            return "2";
        }catch(Exception e){
            System.out.println("333");
            return  "111";
        }finally{
            //在 return "2" 之前执行
            System.out.println("222");
        }
    }

先打印333 再打印222  最后打印111.

HDMI2.1/eDP TX接口设计: HDMI2.1向下兼容,HDMI2.1工作在FRL模式,HDMI2.0工作在TMDS模式。因此采用AC耦合电压模式驱动器。一般采用220nF,封装建议0201。,但是协议要求,往 CEC 管脚通过 27K 电阻加 3.3V 电压,漏电不允许超过。NOTE:如果只需要支持 HDMI2.0 及以下模式时, MOS管也不能省掉。DDC_SCL/DDC_SDA 协议规定是。HDMI2.0模式:配置为高,MOS导通。HDMI2.1模式:配置为低,MOS不导通。,必须增加电平转换电路。形成直流偏置,大约3V。 阅读详情

相关推荐

【Q1/论文复现】:利用 CHARLS 数据库考察抗高血压药物依从性和认知衰退

摘要: 北京大学团队基于CHARLS数据(2011-2018)的纵向研究发现,抗高血压药物高依从性能显著延缓中国45岁及以上社区中老年人的认知衰退。研究表明,坚持服药者7年内全局认知衰退速度降低0.014SD/年,记忆功能衰退减缓0.023SD/年,效果接近正常血压人群水平。研究还提示社会经济地位(SES)可能通过影响用药依从性间接调控认知衰老进程。该成果为高血压管理对认知保护提供了人群级证据,发表于《BMC Medicine》(DOI:10.1186/s12916-025-03949-8)。

dingdianbangni的博客 808

try-catch-finally的返回值问题

1、只有 try-catch的情况下,如果不发生异常,则会返回try中的 return ;如果发生异常,则会返回catch中的return,try中的 return被盖掉; 2、finally中的 return值会覆盖 try和 catch中的 return值。在正常情况(即程序正常执行try catch finally语句块,不会在语句中出现退出程序、线程终...

shimadear的博客 1406

AI报告撰写实战指南:从提示词工程到全流程优化的底层逻辑与实践突破

传统AI写作常被诟病为“信息拼贴”——模型虽能生成文本,却常出现逻辑断裂、数据矛盾、风格不符等问题。而“全流程优化”则是通过系统化设计,将报告生成拆解为需求解析→数据对齐→提示词设计→初稿生成→迭代优化→格式适配六大环节,每个环节均通过技术手段提升输出质量。提示词工程:本质是通过结构化指令(如角色设定、任务分解、格式约束、示例引导)精准控制模型输出方向,是连接用户需求与模型能力的“翻译器”。全流程优化。

2501_92808811的博客 884

Java面试题:try catch finally返回值问题

根据返回值类型不同,分基本类型,引用类型,以及具体数字来对try/catch/finally的实际返回值进行讨论。

BudingCode的博客 1111

从 YOLO 到视觉大模型:工程实践中如何选择?

本文对比了传统视觉模型YOLO与视觉大模型的差异。YOLO是单任务专用模型,适合规则明确、实时性要求高的检测任务;视觉大模型则具备通用视觉理解能力,但存在推理延迟大、算力成本高和"过度智能"等问题。在实际工程中,参数规模并非越大越好,7B-8B模型往往更均衡。控制大模型幻觉需通过严格Prompt设计、定向样本微调和任务拆解等方法。工业落地时应根据任务特性选择模型:YOLO适用于确定性高的场景,视觉大模型更适合复杂多变的环境。模型效果的关键在于任务边界、数据质量和系统设计,而非单纯追求参数

aiia18的博客 950

STM32F407硬件SPI驱动ADS1220避坑指南:从寄存器读不到数据到采样值异常的完整解决流程

本文详细解析了STM32F407硬件SPI驱动ADS1220的常见问题与解决方案,包括SPI配置、寄存器读取异常、采样值优化等关键环节。通过CubeMX配置技巧和Keil调试经验,帮助开发者快速排查从通信失败到数据异常的各种问题,实现高精度数据采集系统的稳定运行。

weixin_26878995的博客 157

java中try、catch、finally中返回值的解析。

java中try、catch、finally中返回值的解析

qq_50987463的博客 903

微调BERT进行中文文本分类任务(Pytorch代码实现)

BERT(Bidirectional Encoder Representation from Transformers)是2018年10月由Google AI研究院提出的一种预训练模型。其模型结构由多层Transformer的Encoder堆叠而成,在大规模语料中进行预训练后,迁移到下游任务,仅进行参数微调训练,就能显著提升性能。本文聚焦于微调中文BERT进行新闻标题分类任务的代码实现。

Iswayzw的博客 1万+

Java中的try,catch,finally中的return的返回值问题

Java中的try,catch,finally中的return的返回值问题 最近在搞面试题的时候遇到一个问题。 在try,catch,finally中有return的问题。 可以分为几种情况: 1.仅try中有return 返回值为1,finally中的i++不会影响到try的return值,并且会在return之前执行。 2.try和finally中都有return finally中的return会覆盖try中的ruturn,返回值为2。try中的return会失效。 3.try和catch中都有re

weixin_44148825的博客 863

UG\NX二次开发 一种获取点的面的方法

有时,我们需要用户选择“面上的点”时,同时获取点所在的面。例如:调标准件、刻字等。通过点击点,ug会创建一个智能对象,可通过函数获得对象的父项,即为点所在的面。下面是封装的函数以及测试例子点在曲线上,获取点所在的曲线同理。UF_UI_point_constructd点对话框 和 block UI对话框都可以使用。

王牌飞行员_里海的博客 1779

SAP 供应商寄售(VMI)完整实现方案

摘要:本文详细讲解了SAP系统中供应商寄售(Consignment)和VMI(供应商管理库存)的实现方法。核心逻辑是物料所有权属于供应商,仅在领用时才触发采购。文章包含配置步骤(物料主数据、供应商设置、定价协议、会计科目等)、端到端操作流程(收货、库存查询、领用、结算、付款)、关键差异比较(与普通采购的区别)、核心事务码和数据表。重点说明了寄售流程无需采购订单,通过信息记录维护价格,领用时才产生应付账款的特点,并提供了常见问题解决方案和VMI进阶优化建议。

金牌架构师 1043

Java中关于try catch finally中的问题总结

关于try catch finally中的几个问题基本上都是为了应对面试的,当然有些也是为了加身认识。 一、try catch finally中finally中代码不执行的情况 1.try catch 中存在死循环[while(true)死循环],而且代码中不会抛出异常; 正常的代码:类似的例子如Android主线程中Handler的Looper循环线程一样; 程序中...

black_bird_cn的博客 2987

try、catch、finally 用法总结

try catch finally 使用 整体执行流程如下,有图看着更容易理解。 详细说明和代码 try-catch-finally中无return时   如果try块中出现异常则进入catch中,执行完catch中代码后进入finally,如果catch中出现异常仍然会执行finally代码块,finally块执行结束后抛出异常。try块中无异常时执行完try块直接执行finally。 以catch中抛出异常为例,代码如下: 执行结果如下: try-catch-finally中包含return时  

weixin_42168421的博客 3万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

try,catch,finally的执行顺序问题

大家面试的时候想必会遇到这种面试题,要我们输出结果。。。 其实在实际的业务中呢一般都是用finally来关闭流的,很少做其它业务操作,所以呢大家也就容易忽视掉这个问题 首先在finally和try中对数据的操作时数据分为 基本数据类型和引用数据类型,他们存放的地方也不一样,一个是栈区另一个是在堆区。 首先我们对基本数据类型的结果进行分析: 1 finally 中没有return pub...

坑里水库的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

try catch finally 使用方法详解

本文是一个老前辈写的java中的try、catch、finally的用法文章,下面的9个例子,把涵盖的所有用法基本都涵盖了,值得大家细细的观看,很有用。看完也就知道到底该怎么用try、catch了。希望对大家有所帮助。文末有我写的一些用法总结。用好try catch很重要,在处理多线程、避免线程阻塞中很有用,同时养成良好的异常处理习惯,也是作为一个程序员的必备素养。 转载自:http://www....

a116385895的博客 5814

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

try 、catch、finally用法总结

1. try 、catch、finally用法总结 1、在进行异常的处理之后,在异常的处理格式中还有一个finally语句,那么此语句将作为异常的统一出口,不管是否产生了异常,最终都要执行此段代码。 2、当try、catch中有return时,finally中的代码依然会继续执行 3、finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变,依然返回保存起来的值。也就是说方法的返回

qq_42295268的博客 1万+

try,catch,finally执行及返回值的问题

在日常的编程中,部分程序会出现一般性的异常,此时要跑出异常,使用try和catch语句,那么其执行的步骤是怎样的呢,如若是try中正确执行了,catch中的还执行吗,若是try 中的不执行,catch中的又该如何执行呢?先看一个程序,如下: public class TryAndCatchTest { /** * @param args */ public static void

waiting的专栏 6722

关于JAVA的try catch finally的return返回值问题

class TestTryFinallyC { public static void main(String[] args) { System.out.println(testt()); } public static int testt() { int x = 99; try {

Tony 的博客 7847

try、catch、finally语句中有return 的各类情况

try、catch、finally语句中有return 的各类情况1、 try-catch-finally中均无return,仅4中有return注意2、try 和 catch 中都带有 return ,finally无return总结 在 Java 的异常处理中,try、catch 和 finally 是按顺序执行的。如果 try 中没有异常,则顺序为 try→finally,如果 try 中有异常,则顺序为 try→catch→finally。但是当 try、catch、finally 中加入 retu

code_java_zqy 2859

关于Java异常处理try catch finally返回值的问题

好

MaYuKang的博客 1348

理解js中的try,catch,finally

try/catch/finally 语句用于处理代码中可能出现的错误信息。

oooooorangeeee的博客 2116

try…catch…finally答疑

try-catch-finally 中哪个部分可以省略? catch 和 finally 语句块可以省略其中一个。但不可以同时省略。 try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? finally是java保证代码一定要被执行的一种机制。这就意味着程序无论正常执行还是发生异常,只要JVM不关闭(System.exit())都能执...

qq_36737982的博客 1350

【Java】try、catch、finally的执行顺序与返回值问题

笔试很多时候都会考try、catch、finally的执行顺序,网上也有很多文章记录他们的执行顺序,但是都是根据代码执行结果推规律,有种死记硬背的感觉。从字节码反编译后的代码可以查看try、catch、finally执行顺序以及返回值,从字节码层面上来看他们的执行顺序。Java之所以能够 Write Once,Run Anywhere,关键在于Java编译后的生成字节码文件.class,一个.jav

偷得浮生半日闲 1225

try catch finally的底层原理

try catch finally底层原理 昨晚参加一个面试,被问到try catch finally相关的知识,虽然之前了解过其中奇怪的用法,特别有return的情况,但是由于时间久远,完全忘了,导致这个问题回答不是很好,只是知道finally无论是否发生异常都会执行的(但是忘了含有return的情况是怎么处理的了),finally常常用来关闭一些资源,像文件,连接等。 finally终究执行 我们先来验证一下finally终究执行 public static int test() {

lwd512768098的博客 943

try,catch,finally结构中return的返回值

实验可能做的不太完善,还有好多情况没有实验,觉得意义也不大。简单总结一下运行的顺序。 首先执行try中的代码,如果有return,则保存住return的值后再执行finally的代码,如果finally中有return,那么则执行finally的return,如果finally中没有return,则执行完finally代码后,会再执行try中的return,返回的值是之前在try中保存的值。ca...

chen404897439的博客 1241
上一篇: jquery.i18n.properties.js国际化的一个简单应用
下一篇: 自制前端脚手架(内网环境下),依赖vue-cli官方模板
ClumsyCoder
博客等级 码龄10年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值