What is JDBC's Connection.isClosed() good for, and why is Snaq DBPool misbehaving on close?
- by Uri
I have the following code in Java:
if(!conn.isClosed())
{
    conn.close();
}
Instead of working, I am awarded with:
java.sql.SQLException: Connection already closed
My connection object is a Snaq.db.CacheConnection
I checked the JavaDocs for isClosed, and they state that:
  This method generally cannot be called
  to determine whether a connection to a
  database is valid or invalid. A
  typical client can determine that a
  connection is invalid by catching any
  exceptions that might be thrown when
  an operation is attempted.
So my questions are:
1) What good is JDBC's isClosed() anyway?  Since when do we use Exceptions in Java to check for validity?
2) What is the correct pattern to close a database? Should I just close and swallow exceptions?
3) Any idea why would SnaqDB be closing the connection? (My backend is a Postgres 8.3)