You can use catch and finally simultaneously.

try
{
  doSomething();
}
catch (Exception e)
{
  logError(e);
}
finally
{
  closeResources();
}

You can also use several catch blocks.

   Thomas

On Mon, 10 Apr 2006, Jim Caserta wrote:

One last item..

I can see using ther finally's as we discussed,
however I can also see using the catches if I want to
handle different exceptions in different ways.

If I don't use them, I will have no idea what error
messages to log.

Don't you have the same issue?

Jim

--- Thomas Fischer <[EMAIL PROTECTED]> wrote:

It helps if an error occurs in the doStuff() part,
because the transaction
is closed properly. As a further benefit, all
updates/inserts since the
last commit/rollback (which is hopefully at the
point where you last
returned the connection to the pool) are reverted.
If no errors occur, the rollback does not hurt,
because it is after the
commit.

By the way, I just committed the documentation page
about transactions and
connections. See


http://svn.apache.org/viewcvs.cgi/db/torque/runtime/trunk/xdocs/reference/connections-transactions.xml?view=markup

    Thomas

On Mon, 10 Apr 2006, Jim Caserta wrote:

Exactly how does that rollback help at that point
of
the code Thomas?

--- Thomas Fischer <[EMAIL PROTECTED]> wrote:

The code now looks good. It's fine to rollback
after
you do the commit.

    Thomas

On Mon, 10 Apr 2006, Jim Caserta wrote:

So if I'm using the following code below,
My question is:
Even if the connection is fine and the database
logic
does it's stuff correctly (Do Stuff)..
And the connection is NOT closed. It's ok to do
the
"rollback" since the commit worked fine also.
correct?

        Connection dbConn = null;
        try {
                dbConn =
Torque.getConnection("db2.torque.environment");
                ////Do Stuff
                dbConn.commit();
        }
        finally {
                if (dbConn == null)     {
                        //Connection error logic
                }
                if (!dbConn.isClosed()) {
                        dbConn.rollback();
                        dbConn.close();
                }
        }

--- Thomas Fischer <[EMAIL PROTECTED]>
wrote:


Jim Caserta <[EMAIL PROTECTED]> schrieb am
10.04.2006 17:40:05:

Sorry about the confusion. I meant using
Torque.getConnection() and dbConn.close()
instead
of
Transaction.begin()..

For any DB which supports transactions:  _Make
sure_
that the connection is
in autocommit mode or use Transaction.begin and
Transaction.commit() or do
both. If you do not commit/rollback and are not
in
autocommit mode you can
run into ugly trouble (e.g. if the transaction
serialization is read
committed, other connections will never see the
changes to the data in the
uncommitted transaction and the like).

And if iI was. the following would work well?


   Connection dbConn = null;
   try {
      // get a connection from the pool
      dbConn =
Torque.getConnection(db2.torque.environment);
      ////Do Stuff
      //Commit the transaction
      dbConn.commit();
   }
   finally {
      if (!dbConn.isClosed()) {
         // some error occurred, try to
rollback
and return
connection to the pool
         dbConn.close();
         dbConn.rollback(); //Is this needed?
      }
   }

This is similar to an earlier version I used
some
time ago. The problem is
it would throw a NullPointerException in the
finally
block if
Torque.getConnection() fails. Also, you should
rollback() before you
close().

Whatever code you use in the end, make sure
(i.e.
_test_) that an error in
retrieving/working with the connection is
handled
correctly.

      Thomas







---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]





__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam
protection around
http://mail.yahoo.com





---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]






---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam
protection around
http://mail.yahoo.com



---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail:
[EMAIL PROTECTED]
For additional commands, e-mail:
[EMAIL PROTECTED]




__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to