首页
学习
活动
专区
圈层
工具
发布

try,finally中都有return时程序的执行顺序

在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家各有各的说法,刚好今天有个朋友问了我这个问题,下面我就提供两段代码,详细解释一下...i=1; 并设定了return的返回值为i; 在finally代码块中为设置返回值,但同样的输出了i; 结果为 Java代码: [java] view plain copy 2 1 结果显示:finally...代码块里如果没有return,finally代码块会优先在try代码块里的return前执行; 第二种情况是:try代码块和finally代码块中都有return语句 这也是我们需要重点讨论的地方; java...程序里有try-catch结构时,代码块里如果有finally代码块,无论如何都会执行finally代码块,上面这段代码 finally代码块里有一个return,在执行finally的return方法时...finally代码块里的代码然后再执行try代码块里的return语句; 2.如果try代码块和finally代码块里都有return语句,try代码块里的return语句会优先finally代码块里的

947150

try,finally中都有return时程序的执行顺序

在Java中当try、finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家各有各的说法,刚好今天有个朋友问了我这个问题,下面我就提供两段代码,详细解释一下...代码块和finally代码块中都有return语句 这也是我们需要重点讨论的地方; java代码如下: package Exception; public class Test01 { public...程序里有try-catch结构时,代码块里如果有finally代码块,无论如何都会执行finally代码块,上面这段代码 finally代码块里有一个return,在执行finally的return方法时...i=1; 栈空间里的 i = 1 ;  随着程序的结束 也就自动消失了~ ?...如果try代码块和finally代码块里都有return语句,try代码块里的return语句会优先finally代码块里的return语句执行,但不会把返回的结果返回给主函数, 而是会把finally

3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java软件开发常出现哪些异常?要怎么处理?

    异常处理是Java软件开发中的一个重要部分,它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等,Java提供了几个异常处理特性,以try,catch和...finally关键字的形式内建于语言自身之中,Java编程语言也允许你创建新的异常,并通过使用throw和throws关键字抛出它们,事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单...在finally程序块中关闭或者释放资源   这在Java编程中,是一个广为人知的最佳实践,在处理网络和IO类的时候,相当于一个标准。...在finally块中关闭资源,在正常和异常执行的情况下,保证之前和稀缺资源的合理释放,这由finally块保证。从Java7开始,该语言有了一项更有趣的功能:资源管理自动化或者ARM块能实现这一功能。...任何方法抛出的异常都有相应的文档记录,这样你就能下意识的提醒任何使用(该方法)的人。

    73940

    finally 释放的是什么资源?

    finally 块的关键特性是:无论 try 块中是否发生异常,也无论是否被 catch 捕获,甚至 try 块中有 return 语句,finally 块中的代码都保证会执行。...现代写法:try-with-resources从 Java 7 开始,引入了 try-with-resources 语法,这是一种更优雅、更简洁的自动资源管理方式。...它能自动在 try 块结束时调用资源的 close() 方法,本质上还是在背后使用了 finally 逻辑。...这大大减少了模板代码,避免了人为错误,是现在首选的资源管理方式。总结概念解释finally 的作用提供一个保证执行的代码块。释放的资源系统资源,如文件句柄、网络端口、数据库连接等。...现代替代方案try-with-resources语句(Java 7+),自动管理资源释放,本质是语法糖,底层依然依赖 finally机制。

    10721

    Java基础面试题&知识点总结(下篇)

    简述 try catch finally 问题 44. try 里有 return,finally 还执行么? 问题 45. 什么是反射?他的主要用途是什么? 问题 46....调用方式:构造函数在创建对象时自动调用,无需手动调用。而普通方法需要手动调用。 用途:构造函数主要用于初始化对象的状态(即设置属性的初始值)。而普通方法用于描述对象的行为。...finally:finally 块包含的代码总是会被执行,无论 try 块中是否抛出了异常,无论 catch 块是否执行。finally 块通常用于放置清理代码,比如关闭文件、释放资源等。...这是因为 finally 块的代码总是在 try 或 catch 块中的 return 语句之前执行。...---- 2.3、Java反射相关 问题 45. 什么是反射?他的主要用途是什么?

    50340

    代码救火队:try-catch-finally带你走出异常困境

    try-catch-finally的基本语法 当然,让我们来谈谈 Java 中 try-catch-finally 的基本语法。...接下来是 finally 块,这是我们的救援队,无论发生了什么,这里的代码都会被执行。就好比你不管发生了什么情况,最终你总能够回到自己的家中,这里是一些无论如何都需要执行的代码。...最后,无论如何都会执行 finally 块中的代码,清理双手。 这就是 try-catch-finally 的基本语法和用法。...; } finally { // 无论如何都会执行的代码 cleanAnimalCages(); } 在这个例子中,我们使用了多个 catch 块来处理不同类型的异常。...陷阱: 在使用 finally 块时,有一些需要注意的陷阱: return 语句在 finally 块中的影响: 如果在 finally 块中包含了 return 语句,它会覆盖掉 try 块或 catch

    26910

    Java程序员必备:异常的十个关键知识点

    前言 总结了Java异常十个关键知识点,面试或者工作中都有用哦,加油。 一. 异常是什么 异常是指阻止当前方法或作用域继续执行的问题。...捕获异常 try{// 程序代码}catch(Exception e){//Catch 块}finaly{ //无论如何,都会执行的代码块} 我们可以通过 try...catch...捕获异常代码,再通过...(此时并没有返回运算后的值,而是先把要返回的值保存起来,若finally中无return,则不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),该情况下函数返回值是在finally...因为没有发生异常,所以catch代码块跳过。 执行finally代码块,输出日志,执行 ++temp表达式. 返回try部分保存的值2....(TestBizException.java:12) 七、Java7 新的 try-with-resources语句 try-with-resources,是Java7提供的一个新功能,它用于自动资源管理

    1.1K20

    【关于Java的异常】

    三、常见的异常处理场景 1. 资源管理 在处理文件、数据库连接等外部资源时,确保资源的正确关闭非常重要。try-with-resources 语句可以帮助我们自动管理资源。...A: try-with-resources 是 Java 7 引入的一种简化资源管理的方式。它允许你在 try 语句中声明要使用的资源,并在 try 块结束后自动关闭这些资源。...Q3: finally 块的作用是什么? A: finally 块用于定义无论是否发生异常都会执行的代码块。通常用于释放资源,确保资源的正确关闭。...即使在 try 块中有 return 语句,finally 块也会执行。 注意: 如果 finally 块中也有 return 语句,它会覆盖 try 块中的返回值。...异常处理方式:通过 try-catch 语句块捕获和处理异常,使用 throws 关键字声明异常,使用 finally 块确保资源的正确关闭。 常见应用场景:资源管理、自定义异常等。

    25910

    Python with关键字原理详解

    引言 对于正确的处理涉及到异常的资源管理时,需要使用 try/finally 代码结构,这样的结构一多会导致整体代码结构 很臃肿繁琐,不易读、不美观,因此在 Python2.6 版本推出 with 关键字...在代码中经常会看见 with open(file) as f 对文件进行操作,其中 with 关键字到底有什么用处呢?让我们一起了解一下其底层原理。来看看如何正确关闭一个文件。...而无论如何,finally 块的代码最终都会被执行。因此,只要把 close 放在 finally 代码中,文件就一定会关闭。...open 方法的返回值赋值给变量 f,当离开 with 代码块的时候,系统会自动调用 f.close() 方法, with 的作用和使用 try/finally 语句是一样的。那么它的实现原理是什么?...如果 with as 代码块成功执行结束,程序自动调用该方法,调用该方法的三个参数都为 None,如果 with as 代码块 因为 异常而中止,程序也自动调用该方法,使用 sys.exc_info 得到的异常信息将作为调用该方法的参数

    6K00

    Python with关键字原理详解

    引言 对于正确的处理涉及到异常的资源管理时,需要使用 try/finally 代码结构,这样的结构一多会导致整体代码结构 很臃肿繁琐,不易读、不美观,因此在 Python2.6 版本推出 with 关键字...在代码中经常会看见 with open(file) as f 对文件进行操作,其中 with 关键字到底有什么用处呢?让我们一起了解一下其底层原理。来看看如何正确关闭一个文件。...而无论如何,finally 块的代码最终都会被执行。因此,只要把 close 放在 finally 代码中,文件就一定会关闭。...open 方法的返回值赋值给变量 f,当离开 with 代码块的时候,系统会自动调用 f.close() 方法, with 的作用和使用 try/finally 语句是一样的。那么它的实现原理是什么?...如果 with as 代码块成功执行结束,程序自动调用该方法,调用该方法的三个参数都为 None,如果 with as 代码块 因为 异常而中止,程序也自动调用该方法,使用 sys.exc_info 得到的异常信息将作为调用该方法的参数

    63830

    【JAVA-Day68】异常处理的奥秘:深度解析 Java try-catch-finally 机制,高效应对异常问题

    通过深入了解它的使用场景和实际应用,我们能够更好地掌握 try-finally 语句的精髓,发挥其在资源管理和程序流程控制方面的妙用。...try-finally 语句的作用 在 Java 中,try-finally 语句主要用于确保在发生异常时某些代码块依然能够得到执行。...通过以上实例演示,我们深入了解了 try-finally 语句在资源管理和程序流程控制中的妙用。...在接下来的内容中,我们将进一步探讨 Java 异常处理机制的进阶特性,帮助读者更全面地掌握异常处理的精髓。...什么是 try-catch-finally 语句?它们各自的作用是什么? try 语句块: 包含可能抛出异常的代码块。 catch 语句块: 处理特定类型的异常,捕获并处理异常。

    29911

    写了挺久的代码,却还被异常支配?

    异常捕获 在编写代码处理异常时,对于检查异常,有2种不同的处理方式:使用try…catch…finally语句块处理它;或者在函数签名中使用throws声明交给函数调用者去解决。...我们有时候不想这么轻易结束,这个时候就用到了 尝试 的概念,我们可以在方法内设置一个特殊的块来捕获异常,在这个块中 "尝试" 各种(可能产生异常的)方法调用,所以我们将其称之为 try 块 。 ?...我们在写代码的时候往往会有所纠结,到底该抛出何种结构? 在决定使用受检异常或者使用未受检异常的时候,我们的主要原则应该是 :如果期望调用者能够适当地恢复程序,这种情况下我们就应该使用受检异常。...在 finally 内部,无论 try 块 中的代码从哪里返回,都会被执行,何以见得呢? ? 那么问题又来了!...既然 finally 中的语句无论如何都会被执行,那我在 finally 中也有 return ,这个时候返回的是什么?我们不妨试一试。 ?

    82110

    看完这篇 final、finally 和 finalize 和面试官扯皮就没问题了

    这种调用就比较鸡肋,在 Java5/6 中,hotspot 虚拟机会自动探测到内嵌调用,并把它们优化掉,所以使用 final 修饰的方法就主要有一个:不可变。...深入理解 finally 我们上面大致聊到了 finally 的使用,其作用就是保证在 try 块中的代码执行完成之后,必然会执行 finally 中的语句。不管 try 块中是否抛出异常。...其次,finally 块在离开 try 块执行完成后或者 try 块未执行完成但是接下来是控制转移语句时(return/continue/break)在控制转移语句之前执行 这一条其实是说明 finally...,则跳转到 finally 处理 如果 catch 语句块中新出现了异常,则跳转到 finally 处理 聊到这里,我们还没说 finally 的本质到底是什么,仔细观察一下上面的字节码,你会发现其实...我们知道,Java 与 C++ 一个显著的区别在于 Java 能够自动管理内存,在 Java 中,由于 GC 的自动回收机制,因而并不能保证 finalize 方法会被及时地执行(垃圾对象的回收时机具有不确定性

    46530

    关于Java基础你不得不会的34个问题

    32 Java 中的异常处理 Java异常类层次结构图 ? 在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。...其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。 catch 块:用于处理try捕获到的异常。...finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。...在以下4种特殊情况下,finally块不会被执行: 在finally语句块第一行发生了异常。...因为在其他行,finally块还是会得到执行 在前面的代码中用了System.exit(int)已退出程序。 exit是带参函数 ;若该语句在异常语句之后,finally会执行 程序所在的线程死亡。

    1.1K20

    【附答案】关于Java基础你不得不会的34个问题

    多态 所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法...32 Java 中的异常处理 Java异常类层次结构图 ? 在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。...其后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块。 catch 块:用于处理try捕获到的异常。...finally 块:无论是否捕获或处理异常,finally块里的语句都会被执行。当在try块或catch块中遇到return语句时,finally语句块将在方法返回之前被执行。...在以下4种特殊情况下,finally块不会被执行: 在finally语句块第一行发生了异常。因为在其他行,finally块还是会得到执行 在前面的代码中用了System.exit(int)已退出程序。

    60830

    技术转载——Java 异常处理的十个建议

    写在前面:2020年面试必备的Java后端进阶面试题总结了一份复习指南在Github上,内容详细,图文并茂,有需要学习的朋友可以Star一下!...出来,到时候排查问题就不好查了啦,到底是SQl写错的异常还是IO异常,还是其他呢?...try-with-resource来处理,它是Java7提供的一个新功能,它用于自动资源管理。...资源是指在程序用完了之后必须要关闭的对象。 try-with-resources保证了每个声明了的资源在语句结束的时候会被关闭 什么样的对象才能当做资源使用呢?...= null){ ... } 十、注意异常匹配的顺序,优先捕获具体的异常 注意异常的匹配顺序,因为只有第一个匹配到异常的catch块才会被执行。

    65330

    2020年最新版Java面试题大全(文末附参考答案)

    面向对象三大特性 面向对象的特征有哪些方面 什么是多态机制?Java语言是如何实现多态的? 面向对象五大基本原则是什么(可选) ③. 类与接口 抽象类和接口的对比 普通类和抽象类有哪些区别?...变量与方法 成员变量与局部变量的区别有哪些 在Java中定义一个不做事且没有参数的构造方法的作用 在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是? 一个类的构造方法的作用是什么?...构造方法有哪些特性? 静态变量和实例变量区别 静态变量与普通变量区别 静态方法和实例方法有何不同? 在一个静态方法内调用一个非静态成员为什么是非法的? 什么是方法的返回值?返回值的作用是什么? ⑤....String 有没有 length()方法 String 类的常用方法都有那些? 在使用 HashMap 的时候,用 String 做 key 有什么好处?...Java 中都有哪些引用类型? 怎么判断对象是否可以被回收? 在Java中,对象什么时候可以被垃圾回收 JVM中的永久代中会发生垃圾回收吗 说一下 JVM 有哪些垃圾回收算法?

    57850

    【愚公系列】2023年10月 Java教学课程 062-资源释放的方式

    自动释放资源:在一些编程语言和框架中,可以使用自动垃圾回收机制来释放不再需要的内存空间。例如,Java中的垃圾回收器会自动识别和回收不再使用的对象。...一、资源释放的方式 在Java中,资源释放可以通过多种方式进行,具体如下: try-with-resources:这是Java7中引入的一种新的语法,可以自动关闭资源,在try语句块中声明需要关闭的资源...1.try-catch-finally 在Java中,资源释放通常使用try-catch-finally语句块来实现。...2.try-with-resources 在 Java 中,当使用带有资源的 try 语句块时,可以自动释放资源。...这个特性被称为 try-with-resources,它可以确保在代码块结束时,所有的资源都被释放。这种方式可以让代码更加简洁,也可以避免常见的资源泄露问题。

    22710
    领券