Hi all!
When and where I should use try-except-finally statement? What is the
difference between:
--------
try:
A...
except:
B....
finally:
C...
--------
and
-------
try:
A...
except:
B....
C...
If B raises or rethrows another exception, finally: ensures that C
still gets called. In the second form that you give, C would not get
called. Here is one way to use try-except-finally:
try:
open database
do database stuff
except DatabaseException, de:
log exception
throw
finally:
close database
Or
try:
transaction = new database transaction
do database stuff
do more database stuff
commit transaction
transaction = None
except DatabaseException, de:
log exception
throw
finally:
if transaction:
rollback transaction
If you are allocating a resource, lock, file, database, etc., then
exception-safe coding style is to get the resource in a try: and
release the resource in finally:
-- Paul