my dog learned polymorphism*
The moose likes Beginning Java and the fly likes finally{}  ? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "finally{}  ?" Watch "finally{}  ?" New topic
Author

finally{} ?

Seetharaman Venkatasamy
Ranch Hand

Joined: Jan 28, 2008
Posts: 5575

Hi all,


finally is always executable block right? so,inside finally block ,we put DataBase connection closing stuff(con.close()..etc..) ...

my question is whether finally is used only for This pupose?..

please anyone can explain me...

Thanks & Regards,
seetharaman.v
[ May 31, 2008: Message edited by: Bear Bibeault ]
Mark Vedder
Ranch Hand

Joined: Dec 17, 2003
Posts: 624

Originally posted by seetharaman venkatasamy:
finally is always executable block right?

Correct. It gets executed regardless if an an exception is thrown in the corresponding try block. One thing to note is that if an exception is thrown and not handled within a finally block itself, code after that exception does not get executed. For example, in the following code:


if the doSomeCleanup() method causes an exception (say a NullPointerException), the close() method never gets called. This can sometimes lead to hard to track down bugs.

Originally posted by seetharaman venkatasamy:
so,inside finally block ,we put DataBase connection closing stuff(con.close()..etc..) ...

Correct.

Originally posted by seetharaman venkatasamy:

my question is whether finally is used only for This purpose?

Generally yes. A finally block's primary purpose is to prevent resource leaks or issues by doing appropriate cleanup. At a higher level, it is used to ensure a piece of code is executed, even if an exception occurs in the corresponding try block.

Take a look at the Java Tutorial page on The finally Block for some more information.
Mark Vedder
Ranch Hand

Joined: Dec 17, 2003
Posts: 624

Just to clarify: When I said the code in a finally block is executed even if an exception occurs in the corresponding try block, that means that the code in a finally block gets executed any time the try block is exited, including if an exception occurs. So if the try block is exited due to a return statement, program flow, a break statement, or an exception, the code in the finally block is executed. I just wanted to make sure that was clear since I may not have worded it the best in my initial reply.
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19653
    
  18

There are two (that I know of) exceptions that will cause a finally block not to be executed:
- when System.exit is called
- when the JVM crashes, e.g. because of a bug in some native code

Of course, in both cases there is no more JVM active to execute the block, so it's quite logical.


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Seetharaman Venkatasamy
Ranch Hand

Joined: Jan 28, 2008
Posts: 5575

Thanks a lot mark

regards,
seetharaman.v
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: finally{} ?
 
Similar Threads
finally , finalize()
sequence generator with mysql
catch and finally
Web Apps
Unreachable statement