Doris Manning
mikedorism at verizon.net
Fri Jul 23 13:13:32 CDT 2010
John, You are correct that you do have to dimension the connection and reader before the try. The Finally block executes whether an error is encountered or not. A good developer always makes sure the garbage got taken care of on the way out the door. The suggestion of checking that the connection did get opened before you execute the rest of the code isn't a bad idea. However, things can still go wrong once the reader/connection are opened and I've personally seen cases where the server-side still sees the connection as open even though the client-side thinks it is gone. Instead of handling the error and then throwing the exception up to the calling block, why not use Functions instead of Procedures and pass back a Boolean indicating whether the operation was successful. Doris Manning Sr. Developer & Database Administrator Hargrove Inc. -----Original Message----- From: dba-vb-bounces at databaseadvisors.com [mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby Sent: Friday, July 23, 2010 1:12 AM To: VBA Subject: [dba-VB] try catch finally OK, so I am trying to learn exception handling. One of the things I am reading is to make heavy use of finally to do cleanup. Fine, except I am ending up with scope issues. for example: Try { set a new connection open a new reader Do something with the reader close the reader close the connection } catch(sqlexception) { handle the sql errors throw; } catch (exception) { handle the nonsql errors throw; } finally { } Logically the close of the reader and connection should go in the finally, with the catch catching any issues actually opening the connection or reader. That doesn't work however because the connection and reader are not in scope in the finally block. It appears that the dimensioning of the connection and reader have to go before the try in order for the finally to see the scope? I assume that the finally block executes after the throw? What happens to the execution thread on a throw? Does the thread execute code up in any sink up above? Does execution return back into this block of code after the code up in the the parent sink finishes executing? I am so confused. ;) -- John W. Colby www.ColbyConsulting.com _______________________________________________ dba-VB mailing list dba-VB at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-vb http://www.databaseadvisors.com