Sonar 要求“使用 try-with-resources 或关闭此“连接".在“终于"中条款.&

2024-05-10Java开发问题
10

本文介绍了Sonar 要求“使用 try-with-resources 或关闭此“连接".在“终于"中条款."的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我想要一个干净的项目.所以我用 Sonar 来检测潜在的缺陷,...

I want to have a clean project. So I used Sonar to detect potential defects, ...

在以下方法中,Sonar 要求:使用 try-with-resources 或在finally"子句中关闭此连接"..

On the below method, Sonar asks to : Use try-with-resources or close this "Connection" in a "finally" clause..

private Connection createConnection() throws JMSException {
    MQConnectionFactory mqCF = new MQConnectionFactory();
    ...

    Connection connection = mqCF.createConnection(...);
    connection.start();

    return connection;
}

你能解释一下我做错了什么以及如何避免声纳消息吗?谢谢.

Can you explain me what I did wrong and how to do to avoid Sonar message? Thank you.

推荐答案

在java中,如果你使用FileInptStream, Connection, ResultSet, Input/OutputStream, BufferedReader, PrintWriter等资源 你必须关闭它在垃圾收集发生之前.所以基本上每当连接对象不再使用时,您都必须关闭它.

In java if you are using resource like FileInptStream, Connection, ResultSet, Input/OutputStream, BufferedReader, PrintWriter you have to close it before garbage collection happens. so basically whenever connection object no longer in use you have to close it.

试试下面的片段

Connection c = null;
    try {
        c = mqCF.createConnection(...);
        // do something
    } catch(SomeException e) {
        // log exception
    } finally {
      try {
        c.close();
      } catch(IOException e1){
        // log something else
      }
    }

//try-with-resources
try(Connection connection = mqCF.createConnection(...)) {
  //use connection here
}

在try with resource的情况下连接会被jvm自动关闭,但是Connection接口必须扩展成AutoCloseable/Closable接口.

In the try with resource case connection will automatically close by jvm, but Connection interface must be extends with AutoCloseable / Closable interface.

这篇关于Sonar 要求“使用 try-with-resources 或关闭此“连接".在“终于"中条款."的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

如何使用 JAVA 向 COM PORT 发送数据?
How to send data to COM PORT using JAVA?(如何使用 JAVA 向 COM PORT 发送数据?)...
2024-08-25 Java开发问题
21

如何使报表页面方向更改为“rtl"?
How to make a report page direction to change to quot;rtlquot;?(如何使报表页面方向更改为“rtl?)...
2024-08-25 Java开发问题
19

在 Eclipse 项目中使用西里尔文 .properties 文件
Use cyrillic .properties file in eclipse project(在 Eclipse 项目中使用西里尔文 .properties 文件)...
2024-08-25 Java开发问题
18

有没有办法在 Java 中检测 RTL 语言?
Is there any way to detect an RTL language in Java?(有没有办法在 Java 中检测 RTL 语言?)...
2024-08-25 Java开发问题
11

如何在 Java 中从 DB 加载资源包消息?
How to load resource bundle messages from DB in Java?(如何在 Java 中从 DB 加载资源包消息?)...
2024-08-25 Java开发问题
13

如何更改 Java 中的默认语言环境设置以使其保持一致?
How do I change the default locale settings in Java to make them consistent?(如何更改 Java 中的默认语言环境设置以使其保持一致?)...
2024-08-25 Java开发问题
13