Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.java.programmer > #38868

Re: Does this make sense?

Newsgroups comp.lang.java.programmer
Date 2019-04-04 11:45 -0700
References <f9818c55-5eb6-47f8-8ec9-d512861ddee7@googlegroups.com> <q84vam$lri$1@dont-email.me> <c001151d-044c-4d1b-ad88-0efd923e4433@googlegroups.com> <q85699$oq6$1@dont-email.me>
Message-ID <b8961ec3-eac5-45da-aa5d-11144bcae219@googlegroups.com> (permalink)
Subject Re: Does this make sense?
From Eric Douglas <e.d.programmer@gmail.com>

Show all headers | View raw


On Thursday, April 4, 2019 at 11:02:14 AM UTC-4, Eric Sosman wrote:
> > Ah right, resources doesn't always work because in some cases I'm using Closeable objects instead of Autocloseable, and in some cases I'm creating the the object (in the case the java.io.File) in the same try block as the object (java.io.FileOutputStream) needing to be closed so they can't be created up front, but in this simple block that does look better.
> 
>      I foolishly assumed that your example code resembled the problem
> you actually have.  I should have known better; sorry.
> 

So for example an Autocloseable can't be used in try-with-resources because it has 2 places to instantiate.  I keep messing with code like the following which keeps giving different errors on what may not be closed.

     public static String testMethod(final String db_connect_string, final String db_userid, final String db_password, final String dbDriver, final String queryText) throws ClassNotFoundException {
          Class.forName(dbDriver);
          Connection conn = null;
          PreparedStatement ps = null;
          ResultSet rs = null;
          try {
               conn = DriverManager.getConnection(db_connect_string, db_userid, db_password);
               ps = conn.prepareStatement(queryText, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
               rs = ps.getResultSet();
          } catch (final SQLException e) {
               e.printStackTrace();
               try {
                    if (ps != null) {
                         ps.close();
                    }
                    if (conn != null) {
                         conn.close();
                    }
                    conn = DriverManager.getConnection("alternate connect string", db_userid, db_password);
                    ps = conn.prepareStatement(queryText, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                    rs = ps.getResultSet();
               } catch (final SQLException e1) {
                    e1.printStackTrace();
               }
          }
          try {
               while (rs.next()) {
                    System.out.println(rs.getRow());
               }
          } catch (final SQLException e1) {
               e1.printStackTrace();
          } finally {
               try {
                    rs.close();
               } catch (final SQLException e) {
                    e.printStackTrace();
                    throw new Error("SQL issue");
               }
          }
          if (ps != null) {
               try {
                    ps.close();
               } catch (final SQLException e) {
                    e.printStackTrace();
                    if (conn != null) {
                         try {
                              conn.close();
                         } catch (final SQLException e1) {
                              e1.printStackTrace();
                              throw new Error("SQL issue");
                         }
                    }
                    throw new Error("SQL issue");
               }
          }
          if (conn != null) {
               try {
                    conn.close();
               } catch (final SQLException e) {
                    e.printStackTrace();
                    throw new Error("SQL issue");
               }
          }
          return null;
     }

Back to comp.lang.java.programmer | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Does this make sense? Eric Douglas <e.d.programmer@gmail.com> - 2019-04-04 05:22 -0700
  Re: Does this make sense? Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-04-04 09:03 -0400
    Re: Does this make sense? Eric Douglas <e.d.programmer@gmail.com> - 2019-04-04 07:02 -0700
      Re: Does this make sense? Eric Sosman <esosman@comcast-dot-net.invalid> - 2019-04-04 11:01 -0400
        Re: Does this make sense? Eric Douglas <e.d.programmer@gmail.com> - 2019-04-04 08:21 -0700
        Re: Does this make sense? Eric Douglas <e.d.programmer@gmail.com> - 2019-04-04 11:45 -0700
          Re: Does this make sense? Arne Vajhøj <arne@vajhoej.dk> - 2019-04-04 20:33 -0400
            Re: Does this make sense? Eric Douglas <e.d.programmer@gmail.com> - 2019-04-05 08:39 -0700
              Re: Does this make sense? Arne Vajhøj <arne@vajhoej.dk> - 2019-04-05 12:31 -0400
              Re: Does this make sense? bursejan@gmail.com - 2019-04-05 10:53 -0700
                Re: Does this make sense? bursejan@gmail.com - 2019-04-05 10:57 -0700
                Re: Does this make sense? bursejan@gmail.com - 2019-04-05 11:02 -0700
                Re: Does this make sense? bursejan@gmail.com - 2019-04-05 11:13 -0700
          Re: Does this make sense? Patrick Roemer <sangamon@netcologne.de> - 2019-04-05 17:43 +0200
            Re: Does this make sense? Daniele Futtorovic <da.futt.news@laposte-dot-net.invalid> - 2019-04-07 22:14 +0200
      Re: Does this make sense? Andreas Leitgeb <avl@logic.at> - 2019-04-04 15:15 +0000

csiph-web