广告
返回顶部
首页 > 资讯 > 后端开发 > Python >如何使用try-with-resource机制关闭连接
  • 663
分享到

如何使用try-with-resource机制关闭连接

2024-04-02 19:04:59 663人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

使用try-with-resource机制关闭连接 JAVA的一大特性就是JVM会对内部资源实现自动回收 即自动GC,给开发者带来了极大的便利。但是JVM对外部资源的引用却无法自动回

使用try-with-resource机制关闭连接

JAVA的一大特性就是JVM会对内部资源实现自动回收

即自动GC,给开发者带来了极大的便利。但是JVM对外部资源的引用却无法自动回收,例如数据库连接,网络连接以及输入输出io流等,这些连接就需要我们手动去关闭,不然会导致外部资源泄露,连接池溢出以及文件被异常占用等。

传统的手动释放外部资源一般放在

try{}catch(){}finally{}机制的finally代码块中,因为finally代码块中语句是肯定会被执行的,即保证了外部资源最后一定会被释放。同时考虑到finally代码块中也有可能出现异常,finally代码块中也有一个try{}catch(){},这种写法是经典的传统释放外部资源方法,显然是非常繁琐的。

jdk1.7之后有了try-with-resource处理机制

首先被自动关闭的资源需要实现Closeable或者AutoCloseable接口,因为只有实现了这两个接口才可以自动调用close()方法去自动关闭资源。写法为try(){}catch(){},将要关闭的外部资源在try()中创建,catch()捕获处理异常。

其实try-with-resource机制是一种语法糖,其底层实现原理仍然是try{}catch(){}finally{}写法,不过在catch(){}代码块中有一个addSuppressed()方法,即异常抑制方法。

如果业务处理和关闭连接都出现了异常,业务处理的异常会抑制关闭连接的异常,只抛出处理中的异常,仍然可以通过getSuppressed()方法获得关闭连接的异常。

和传统的try{}catch(){}finally{}机制相比,try-with-resource处理机制有了这个异常抑制方法就是帮助我们简化了关闭连接时出现异常的处理。

try-with-resource使用时遇到的问题

java 1.7之后 增加了 try-wit-resource的语法糖

大概的用法就是在try中声明一个或者多个的流,会在try块代码执行完成后自动关闭流,不用再写finally进行手都关闭。


try (InputStream is1 = ...;
     InputStream is2 = ...;) {
    //do something
} catch{
}

于是我就在项目中想改成这种写法,但是在改的过程中遇到了一些问题。我的代码中需要对声明过后的流再赋值,但是用这样的写法一直会报错

代码大概是这样的:

此时会编译出错:

The resource is1 of a try-with-resources statement cannot be assigned;

报错的原因是:

try-with-source中声明的变量无法被更改。但是我很奇怪这是为什么,上网搜了没有搜到,于是去找了一下官方文档。官方文档中有一段这样的描述:

It is a compile-time error if final appears more than once as a modifier for each variable declared in a resource specification. A variable declared in a resource specification is implicitly declared final (§4.12.4) if it is not explicitly declared final.

意思就是,try-with-resource中声明的变量会隐式的加上final 关键字,所以无法再进行赋值。但是至于为什么这么设计,我暂时没找到答案。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 如何使用try-with-resource机制关闭连接

本文链接: https://www.lsjlt.com/news/131578.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何使用try-with-resource机制关闭连接
    使用try-with-resource机制关闭连接 JAVA的一大特性就是JVM会对内部资源实现自动回收 即自动GC,给开发者带来了极大的便利。但是JVM对外部资源的引用却无法自动回...
    99+
    2022-11-12
  • java中怎么使用try-with-resource机制关闭连接
    本篇内容主要讲解“java中怎么使用try-with-resource机制关闭连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中怎么使用try-with-resource机制关闭连接”...
    99+
    2023-06-20
  • 使用try-with-resource的输入输出流自动关闭
    try-with-resource的输入输出流自动关闭 最近在做代码审核的时候,审核工具提示我将 try-catch-finally 给替换掉,而且根据公司相关要求,该提示的级别还不...
    99+
    2022-11-12
  • java中怎么使用try-with-resource实现输入输出流自动关闭
    本篇内容介绍了“java中怎么使用try-with-resource实现输入输出流自动关闭”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!tr...
    99+
    2023-06-20
  • 如何使用xshell连接linux虚拟机
    要使用Xshell连接Linux虚拟机,您需要按照以下步骤进行操作:1. 下载和安装Xshell软件:您可以从Xshell官方网站或...
    99+
    2023-09-18
    xshell linux
  • docker虚拟机中如何使用ssh连接
    本篇内容介绍了“docker虚拟机中如何使用ssh连接”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装docker这里就不演示怎么安装...
    99+
    2023-06-27
  • 云服务器和主机如何连接使用
    云服务器和主机之间的连接需要通过公网线路进行连接。以下是一些常见的连接方式: HTTP/1端口:在云服务器的主机地址处添加“HTTP/1”的端口号,如1。这样在客户端访问云服务器时,就会将该端口打开。 HTTP/2端口:在云服务器的主机...
    99+
    2023-10-27
    主机 服务器
  • 如何使用Xshell连接VMware上的Linux虚拟机
    本篇内容主要讲解“如何使用Xshell连接VMware上的Linux虚拟机”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Xshell连接VMware上的Linux虚拟机”吧!步骤: 检查...
    99+
    2023-06-21
  • 如何使用 FinalShell 连接到 VMware 上的 Linux 虚拟机
    1,虚拟机端 (1)查看ip ifconfig   (注:使用 ifconfig 报错:提示命令找不到,要先安装网络工具,执行如下命令即可) sudo apt- install net-tools 然后在使用 ifconfig  命令查...
    99+
    2023-10-18
    linux 运维 服务器
  • window环境下如何使用VScode连接虚拟机MySQL
    本文将为大家详细介绍“window环境下如何使用VScode连接虚拟机MySQL”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“window环境下如何使用VScode连接虚拟机...
    99+
    2022-10-18
  • ubuntu20.04如何使用蓝牙连接手机互传文件
    这篇文章将为大家详细讲解有关ubuntu20.04如何使用蓝牙连接手机互传文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在工作中我们经常需要在手机与电脑之间传文件,但是在没有网络的情况下我们通常会使用...
    99+
    2023-06-13
  • 阿里云服务器如何使用网络连接手机
    阿里云服务器使用网络连接手机可能会因不同的云服务器而有所不同,但以下是一些常见的步骤: 登录阿里云服务器管理器。在这里我们可以查看我们已经连接到的阿里云服务器以及其IP和端口。 打开我们的手机,并通过蓝牙或USB连接到阿里云服务器。 打...
    99+
    2023-10-26
    阿里 如何使用 服务器
  • 主机免费云服务器如何连接电脑使用
    免费云服务器通常具有以下特点: 价格便宜:与收费的云服务器相比,免费的云服务器价格相对较低。这使得很多人都可以负担得起并获得免费的云服务器。 可扩展性强:免费的云服务器通常可以扩展到数倍于所需的容量和带宽。这意味着,如果您的应用程序需要...
    99+
    2023-10-27
    主机 服务器 电脑
  • 如何使用docker安装虚拟机并打开ssh连接
    小编给大家分享一下如何使用docker安装虚拟机并打开ssh连接,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 使用docker安装虚拟机并打开ssh连接 一、需求   最近有个需求...
    99+
    2022-10-19
  • .NET5控制台程序如何使用EF连接MYSQL数据库
    小编给大家分享一下.NET5控制台程序如何使用EF连接MYSQL数据库,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用nuget下载:Microsoft.Ext...
    99+
    2023-06-20
  • Win10使用打印机时提示打印机服务关闭如何开启打印机服务
      Win10系统在使用打印机时,总是提示打印机服务关闭。当然,这里的打印机服务指的是软件设置而不是硬件的打印机开关。如何开启已经关闭的打印机服务呢?又如何关闭呢?   点击Win10系统开始菜单,选择弹出菜单的控制面...
    99+
    2023-06-10
    Win10 打印机
  • ubuntu20.04如何使用蓝牙连接手机实现文件互传
    ubuntu20.04使用蓝牙连接手机实现文件互传的方法:1、在ubuntu20.04系统桌面打开设置页面并找到“蓝牙”设置功能;2、在蓝牙设置功能窗口中点击右上角打开“蓝牙”开关;3、在列表中找到我们手机蓝牙名称,并点击打开;4、打开后会...
    99+
    2022-10-17
  • 主机免费云服务器如何连接电脑上使用
    对于企业而言,云服务器是一种高效的解决方案。它可以提供更高的性能、更低的成本和更快的部署速度,为企业提供了可靠的技术支持和更大的灵活性。云服务器不仅能够帮助企业快速搭建应用程序,还能够实现资源共享和管理,大大提高了企业的运营效率。 对于个...
    99+
    2023-10-27
    主机 服务器 电脑
  • 使用adb devices看不到已连接的真机,如何处理?
    常见问题:进行APP自动化测试,必不可少的就是连接真机进行测试,但是经常会出现真机已经通过USB连接到电脑上,但是adb的设备列表中任然找不到设备。对于这种问题,很多小伙伴不知道怎么解决。 解决办法:将手机的VID添加到.android目录...
    99+
    2023-08-24
    adb android
  • 阿里云服务器如何使用网络连接手机热点
    首先,你需要购买阿里云服务器,并选择适合你的应用程序的阿里云服务器。在选择服务器时,你需要考虑服务器的安全性、可用性、可扩展性和可靠性等因素。阿里云提供多种不同类型的服务器,包括云服务器、容器云服务器、对象存储、CDN等。你可以根据自己的需...
    99+
    2023-10-28
    热点 阿里 如何使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作