java语言深度讨论

try-with-resource写法对构造器抛异常的处理

如果我们在类的构造器里抛出异常,try-with-resource写法是没法自动调close的。逻辑上很好理解,你对象都没成功创建,我为啥要调close啊。
从反编译的代码里也可以看出端倪:

            MyParser parser = new MyParser(path);Throwable var3 = null;try {// do sth here...} catch (Throwable var13) {var3 = var13;throw var13;} finally {if (parser != null) {if (var3 != null) {try {parser.close();} catch (Throwable var12) {var3.addSuppressed(var12);}} else {parser.close();}}}

我们会看到,try-with-resource依然会翻译为try-finally,在finally里面,是要明确判断构造对象parser是否为null,不为null,才会调用其close方法的。一旦构造器抛异常,parser肯定是null,所以其close不会调用。
所以,如果构造器里涉及某些资源创建(例如文件),同时可能抛异常,就要在构造器里做好异常下的资源清理,而不能指望close方法自动完成。
这样的处理逻辑跟C++也是一样的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt|大小端数据转换

后面打算写Qt关于网络编程的博客,网络编程就绕不开字节流数据传输,字节流数据的传输一般是根据协议来定义对应的报文该如何组包,那这就必然牵扯到了大端字节序和小端字节序的问题了。不清楚的大小端的可以看一下相关资料:大小端模…

类和对象:为什么C++推荐使用多态

优势: 在开发中追求开放扩展,封闭修改,多态的使用使得源程序可以更方便的进行扩展而不需要修改源代码。同时多态也使代码的可读性更强。 案例1:利用多态实现计算器类 class AbstractClaculator { public:virtual int getResult…

harr小波变换及其逆运算的推导及演示

哈尔小波(Haar wavelet)是最早提出的小波变换之一,它的变换和逆变换运算比较简单。对于一维信号(向量)的哈尔小波变换,可以分为两个步骤:分解步骤和重建(逆变换)步骤。 正向变换: 对于给定的四元组 (a, b, c, d),两次哈尔小波变换的过程如下: 第一次变换: 计算两…

c++线程thread示例

本文章记录c创建线程&#xff0c;启动线程和结束线程的代码。 需要注意&#xff0c;编译时需要添加-lpthread依赖。 代码&#xff1a; ThreadTest.h #ifndef TEST_THREAD_TEST_H #define TEST_THREAD_TEST_H#include <thread> #include <mutex>class ThreadTes…

【华为 ICT HCIA eNSP 习题汇总】——题目集11

1、某公司的内网用户采用 NAT 技术的 NO-pat 方式访问互联网&#xff0c;若所有的公网地址均被使用&#xff0c;则后续上网的内网用户会&#xff08;&#xff09;。 A、挤掉前一个用户&#xff0c;强制进行 NAT 转换上网 B、将报文同步到其他 NAT 转换设备上进行 NAT 转换 C、自…

springboot集成 Redis快速入门demo

一、准备redis环境 这里用docker-compose来搭建Redis测试环境&#xff0c;采用单机模式&#xff0c;具体配置如下&#xff1a; docker-compose-redis.yml version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/redis:6.0.8 # ima…

kafka详细解释

什么是kafka Kafka是一个开源的分布式流处理平台&#xff0c;最早由LinkedIn开发&#xff0c;并于2011年成为Apache软件基金会的顶级项目。Kafka使用高效、可扩展和持久化的方式处理流式数据&#xff0c;可以存储和处理大规模的实时数据流。Kafka的核心概念包括消息生产者、消息…

编程笔记 html5cssjs 064 JavaScrip语言规则

编程笔记 html5&css&js 064 JavaScrip语言规则 JavaScript 有哪些基本的语言规则&#xff1f; 接下来正式接触编程语言了&#xff0c;每一门语言都有一些基本的语言规则&#xff0c;这些规则有些在没有具体使用之前可能不好理解&#xff0c;初学者简单了解就可以了&…

牛客周赛30

思路&#xff1a;先把x, y除以最大公约数变成最小值&#xff0c;然后同时乘以倍数cnt&#xff0c;只记录两个数都在[l,r]间的倍数。 代码&#xff1a; int gcd(int a,int b){return b ? gcd(b, a % b) : a; }void solve(){int x, y, l, r;cin >> x >> y >>…

ubuntu中的rsyslog

目录 1. rsyslog简介 2. 查看/var/log 3. syslog的配置文件 3.1 /etc/rsyslog.d/50-default.conf 3.2 /etc/rsyslog.conf 4. 如何写入syslog 4.1 C语言 4.2 shell 4.3 内核输出 5. syslog.1和syslog.2.gz等文件是如何生成 6. logrotate是如何被执行 7. 如何限制sys…

【网络】WireShark过滤 | WireShark实现TCP三次握手和四次挥手

目录 一、开启WireShark的大门 1.1 WireShark简介 1.2 常用的Wireshark过滤方式 二、如何抓包搜索关键字 2.1 协议过滤 2.2 IP过滤 ​编辑 2.3 过滤端口 2.4 过滤MAC地址 2.5 过滤包长度 2.6 HTTP模式过滤 三、ARP协议分析 四、WireShark之ICMP协议 五、TCP三次握…

Jmeter学习系列之一:Jmeter的详细介绍

目录 一、Jmeter的介绍 二、Jemeter的特点 三、Jemter相关概念 3.1采样器&#xff08;Samplers&#xff09; 3.2逻辑控制器&#xff08;Logic Controllers&#xff09; 3.3监听器&#xff08;Listeners&#xff09; 3.4配置元件&#xff08;Configuration Elements&#…

Mac安装配置maven

Mac安装配置maven 官网下载地址&#xff1a;https://maven.apache.org/download.cgi 下载好以后解压配置 maven 环境变量 打开终端&#xff0c;输入命令打开配置文件./bash_profile open ~/.bash_profile输入i进入编辑模式,进行maven配置; MAVEN_HOME为maven的本地路径 ex…

Phoncent博客GPT写作工具

对于许多人来说&#xff0c;写作并不是一件轻松的事情。有时候&#xff0c;我们可能会遇到写作灵感枯竭、写作思路混乱、语言表达困难等问题。为了解决这些问题&#xff0c;Phoncent博客推出了一款创新的工具——GPT写作工具&#xff0c;它利用了GPT技术&#xff0c;为用户提供…

Springboot入门教程详解

Springboot入门教程详解 博客主页&#xff1a;划水的阿瞒的博客主页 欢迎关注&#x1f5b1;点赞&#x1f380;收藏⭐留言✒ 系列专栏&#xff1a;Springboot入门教程详解首发时间&#xff1a;&#x1f39e;2024年1月29日&#x1f3a0; 如果觉得博主的文章还不错的话&#xff0c…

vue+axios+promise实际开发用法

vueaxiospromise实际开发用法 vuex 核心 & 数据响应式原理 vuex 使用总结&#xff08;详解&#xff09; vue的双向绑定原理及实现 一、axios的介绍 axios 是由 promise 封装的一个 http 的库。 promise是 es6 为解决异步编程的。 什么是异步&#xff1f; 1. 不会按…

BERT-文本分类NER

BERT文本分类 训练样本 训练数据&#xff1a;18W条 评估数据&#xff1a;1W条 测试数据&#xff1a;1W条 体验2D巅峰 倚天屠龙记十大创新概览 8 60年铁树开花形状似玉米芯(组图) 5 同步A股首秀&#xff1a;港股缩量回调 2 中青宝sg现场抓拍 兔子舞热辣表演 8 锌价难续去年辉…

【大数据】Flink 架构(六):保存点 Savepoint

《Flink 架构》系列&#xff08;已完结&#xff09;&#xff0c;共包含以下 6 篇文章&#xff1a; Flink 架构&#xff08;一&#xff09;&#xff1a;系统架构Flink 架构&#xff08;二&#xff09;&#xff1a;数据传输Flink 架构&#xff08;三&#xff09;&#xff1a;事件…

你这人能不能灵活点?前端代码简单优化一下?

公众号&#xff1a;程序员白特&#xff0c;可jia前端qun 背景 贴近目前公司的业务&#xff0c;做的增删改查比较多。基本上都是做一些表格的业务系统比较多&#xff0c;因此在写的过程中&#xff0c;都会遇到一些优化的细点&#xff0c;仅供参考&#xff0c;觉得好的可以采纳&a…

随便封装一下BaseActivity

老码农&#xff0c;没什么激情撸码&#xff0c;随便封装一下base类&#xff0c;写来玩玩 直接上源码 一、创建BaseActivity 1、使用viewBinding来绑定视图 2、利用代理实现状态栏、菊花扩展 abstract class BaseActivity<VB : ViewBinding> : AppCompatActivity() {…