【Android面试八股文】finally中的代码一定会执行吗?try里有return,finally还执行么?

本文探讨了Java中finally块的执行情况,特别是在try块内有return语句时。根据Java官方文档和JVM规范,finally块的代码通常会执行,即使在try块中有return。然而,当遇到System.exit()或线程是守护线程时,finally块可能不会执行。文章通过示例代码进行了验证和特殊情况分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

finally中的代码一定会执行吗?try里有return,finally还执行么?

这道题想考察什么?

对Java语言的深层次理解,避免在开发时写出"问题"代码

考察的知识点

JM执行流程

考生应该如何回答

在Java官方文档中对finally的描述如下

The `finally` block *always* executes when the `try` block exits.

大致意思是 : "finally" 块"try" 块退出时始终执行。

JVM规范里面同样也

### Python 面试常见问题及答案 #### 什么是 `pass` 语句及其作用? 在Python中,`pass` 是一种占位符语句,表示什么都不做。当语法上需要一条或多条语句但是程序逻辑不需要任何操作时可以使用它[^1]。 ```python for i in range(5): pass # 占位符,在此不做任何事情 ``` #### 如何理解Python中的异常处理机制? 异常处理是编程语言提供的一种结构化方式来应对运行期间可能出现的问题。具体到Python而言,这种机制主要依赖于四个关键词:`try`, `except`, `else` 和 `finally` 来构建异常处理器[^3]: - **Try**: 定义了一个代码块,其中包含了可能会触发异常的操作; - **Except**: 如果上述尝试失败,则执行代码作为补救措施;可以根据不同类型的异常指定多个分支; - **Else**: 可选部分,仅当没有发生异常的情况下才会被执行; - **Finally**: 不管是否有异常产生都将被调用的一段清理工作区域内的资源释放等动作。 示例: ```python def divide_numbers(a, b): try: result = a / b except ZeroDivisionError as e: print(f"Error: {e}") return None else: print("No exceptions occurred.") return result finally: print("Executing the 'finally' clause.") print(divide_numbers(10, 2)) # 输出正常结果加上 "Executing..." print(divide_numbers(10, 0)) # 抛出错误信息之后同样显示 "Executing..." ``` #### 解释Python的多态性概念 面向对象编程(OOP)中有三大特性之一就是多态(polymorphism),意味着相同的方法可以在不同的类有不同的行为表现形式。这允许子类重写父类方法从而改变其功能而不影响原有接口定义。 比如创建一个基类Animal以及两个派生自它的Cat和Dog类,它们都实现了make_sound()函数但各自有着独特的实现细节: ```python class Animal(object): def make_sound(self): raise NotImplementedError('Subclasses must implement this!') class Cat(Animal): def make_sound(self): return "Meow" class Dog(Animal): def make_sound(self): return "Woof" animals = [Cat(), Dog()] for animal in animals: print(animal.make_sound()) ``` 这段代码将会依次打印 “Meow” 和 “Woof”。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节卷动

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值