Java中finally失效的几种情况【持续更新】

背景

在Java开发中,使用tray catch + finally 组合可执行和抛出异常,方便定位问题,在finally中异步记录日志信息。

功能

1、异常处理机制

如在try中加锁,在finally中解锁

在finally中异步记录日志

原理分析

finally语句一定执行,基于 Java编译器在字节码层面,会生成额外的字节码,将finally中的语句逻辑复制到 try和catch的出口后,只要程序执行,就会走finally的逻辑。

注意:finally语句块的执行是在return语句之前。

失效情况

1、终止JVM

如在 try catch中调用 【system】的exit方法,终止JVM

java 复制代码
// 手动终止Jvm
System.exit(init);

2、线程终止

在try catch处理线程,调用【Thread】的stop方法

java 复制代码
// 手动终止线程
Thread.stop();

3、死循环

在try catch 中有死循环,死锁等情况,程序一直执行,最终可能无法进入到finally语句中。

相关推荐
卢锡荣29 分钟前
乐得瑞Type-c接口产品描述
c语言·开发语言
晴天的雨.99229 分钟前
【C++】模板进阶
开发语言·c++·算法
倔强的石头10632 分钟前
【Linux指南】进程通信系列(二):匿名管道 —— pipe 的本质、fork 继承与四种读写规则
java·linux·运维
调试优选官38 分钟前
2026年IoT物联网开发赛道年度榜单深度解析:D-coding物联网系统定制与源码交付能力专项解读
java·物联网·struts·iot·开发经验
木井巳40 分钟前
【动态规划】三步问题
java·算法·leetcode·动态规划·推荐算法
小张成长计划..43 分钟前
【Linux】25:线程概念和控制
java·linux·jvm
蛋蛋的就会顺顺的10 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要82610 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡10 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
死磕音视频11 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers